2023
为什么迟到
上一次写博客,已经是一年前的事情了,其实至少有六篇(bushi)要写的,但是都起了个头就放那去了。
自从2022年西湖论剑线下决赛之后,我闲的蛋疼把笔记本装成了linux,期间呢又因为看不懂洋文一路点next导致全盘格式化,博客全丢了。
之后又因为√8️⃣学校疫情期间的🐮🐴操作,没回学校。
不提那些,终于大三了,花了两三天吧博客彻底鼓捣完了算是步入正轨。
之后会更新一些iot方面的笔记,还有随便写写的日记一类。
2022发生了什么
每次回忆前一年总是脑袋空空,于是我就总结出一个办法,那就是对着手机相册还有你最活跃的群聊看看聊天记录。
太久没写东西了,今年就写个流水账吧
1-2021.12.30放假
忘记考了啥,手机里也没记录,无所屌谓哦,那些没啥可留念的。
第一张图就是我坐在高铁上写博客的,看样子当时再写2021年夏天去兰州-陇剑杯的博客,没发,那就说明是寄了。
2021.12.30 18:50
之后收到了套宝送的兔兔伯爵!好耶!
2022.02.11 15:19:50
神奇的是期间发生的事情,我一件也想不起来,只是过了十几天就到学校了,寒假转眼消失不见。
兔兔 ...
hexo部署
0-Preview
一年没鼓捣博客了,一方面是换了linux以后本地文件搞丢了,也没办法恢复,只能一篇一篇文章复制下来
另一方面就是纯懒
重新搞了一下博客发现,hexo已经跨过三个大版本了,刚好记录一下配置的过程。
防止又出啥问题重新搭建不记得具体细节。
1-配置文件
我一直在思考图片怎么处理,直接放到服务器太麻烦,放到github+cdn还是有点卡。最后决定网站封面这一类直接放到服务器,文章的图片放到对象云存储,花不了几个钱。
2-插件
2.1-图片懒加载
butterfly自带了懒加载
1npm install hexo-lazyload-image --save
在_config.yml添加配置:
123lazyload: enable: true loadingImg: /img/loading.gif
3-迁移图片
相信很多人都有过使用gitee图床的经历,但是之后莫名其妙的gitee不让用了。
或者是使用github图床然后挂cdn的,大都很麻烦
4-hideline
123哪個英文字母最酷? {% hideInline 因為西裝褲(C裝酷),查看答案,#FF ...
CS144计算机网络-数据链路层完结篇
MAC地址、IP地址以及ARP协议
MAC地址
使用点对点信道的数据链路层不需要使用地址
使用广播信道的数据链路层必须使用地址来区分各主机
广播信道的数据链路层必须使用地址(MAC)
image-20201014224732019
MAC地址又称为硬件地址或物理地址。请注意:不要被 “物理” 二字误导认为物理地址属于物理层范畴,物理地址属于数据链路层范畴
IEEE 802局域网的MAC地址格式
image-20201014225358570
组织唯一标识符OUI
生产网络设备的厂商,需要向IEEE的注册管理机构申请一个或多个OUI
网络接口标识符
由获得OUI的厂商自行随意分配
EUI-48
48是这个MAC地址的位数
image-20201014230248959
对于使用EUI-48空间的应用程序,IEEE的目标寿命为100年(直到2080年),但是鼓励采用EUI-64作为替代
关于无效的 MAC 帧
数据字段的长度与长度字段的值不一致;
帧的长度不是整数个字节;
用收到的帧检验序列 FCS 查出有差错;
数据字段的长度不在 46 ~ 150 ...
CS144计算机网络-链路层补充
0-Preview
不知不觉,在家隔离都十六天了,学校也不让回,感觉再不回去要挂科了。不过好歹专业课这几门以及快学完了,开学就剩公休课要从头开始。
数据链路层知识很多,就多开了一章
包含PPP点对点协议等后续知识
1-点对点协议PPP(Poiny-to-Point Protocol)
PPP协议为在点对点链路传输各种协议数据报提供了一个标准方法,主要由以下三部分构成:
对各种协议数据报的封装方法(封装成帧)
链路控制协议LCP 用于建立、配置以及测试数据链路的连接
一套网络控制协议NCPs 其中的每一个协议支持不同的网络层协议。
1.1-透明传输
面向字节的异步链路,插入转义字符
面向比特,还是之前的方法,只要发现五个连续的1,就插入一个0
1.2-差错检测
$$
CRC—CCITT = X^{16} + X^{12} +X^{5} +1
$$
计算范围是除去定界符 F 以及 FCS部分。
接收方每收到一个PPP帧,就进行CRC校验,失败就直接丢弃。PPP的链路层不向上层提供可靠服务
1.3-工作状态
2-媒体接入控制MAC(Medium Access Control)
共享信道 ...
CS144计算机网络-数据链路层
0-Preview
我的计网学习路线是,跟着课本以及网课快速把概念过一遍,然后上手cs144的lab。有lab经验,无论是考研还是工作,都大有益处。
时代变了,现在没几个项目或者lab经验,别说月薪上万了,五千都够呛。
1-数据链路层概述
1.1-使用点对点信道的数据链路层
三个重要问题:
封装成帧:在数据链路层上会给数据添加 帧头和帧尾
差错检测:在帧尾添加检错码来防止误码 CRC
可靠传输:若发生误码,则丢弃后若向上层提供的是可靠服务,则会重新接受该数据
此处与谢希仁所著第八版《计算机网络》中的描述有所不同。等我回学校拿到课本以后对比一下,在这里进行更改。
1.2-使用广播信道的数据链路层(wifi)
引入mac地址,来确保信息会传给指定的机器
共享式以太网的媒体接入控制协议 CSMA/CD
802.11局域网的媒体接入控制协议 CSMA/CA:载波监听 多点接入/碰撞避免
2-封装成帧
2.1-封装成帧
并不是所有协议格式都有帧定界标志,例如以太网V2的MAC帧格式:
该帧是通过在物理层中每个帧前面添加一个八字节的前导码:
3-差错检测
比特差错:传输过程中,1变成0或者 ...
CS144计算机网络-物理层学习笔记
0-Preview
人在河南,刚下飞机,码也刚黄,不知道居家隔离啥时候是个头。
在家里还是很舒适的,学习效率也高,安安静静的。没有大半夜振捣,也没有凌晨一点大残,更没有凌晨三点胡啦!
冲一波cs144和操作系统,这两门课搞完,就剩下编译原理了。
1-物理层基本概念
物理层存在的意义就是解决如何在不同传输媒体上传输01数据。
导引型传输媒体:双绞线,同轴电缆,光缆
非导引型:微波通信例如wifi
物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流。
物理层为数据链路层屏蔽了各种传输媒体的差异,使数据链路层只需要考虑如何完成本层协议和服务,而不必考虑网络具体的传输媒体是什么。
1.2-物理层协议的主要任务
机械特性:指明接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置。
电气特性:指明接口电缆的各线上出现的电压的范围。
功能特性:指明某线上出现的某一电平的电压表示何种意义。
过程特性:指明对于不同功能的各种可能事件的出现顺序。
2-物理层下面的传输媒体
这部分了解即可,最好能学会双绞线接线,以后比赛调试设备可以用到。
白橙、橙、白绿、蓝、白蓝、绿、白棕、棕(适合 ...
CS144计算机网络-体系结构补充
0-Preview
换了linux系统,导致之前的笔记丢失,刚好换一下以后的笔记思路。首先针对有学习方向的人而言,电子笔记优于手写,上次看到学妹记了十几页的php,我大为震撼。
其次,计算机专业的笔记,与高中所认知的学习笔记想去甚远,我们需要大量的截图以及源代码支撑,才能理解某些定义以及应用。所以推荐使用markdown语法。
关于如何记笔记,什么是重点,有空了开个公开课讲一下。不过自始至终还是那句话 “切勿让记笔记耽误了你的学习!”
1-MISC
计算机网络最简单的定义是:一些互相连接的、自治的计算机的集合。
2-计算机网络体系结构
实际上的计算机网络体系结构是抢占了OSI体系结构,只有四层:网络接口层、网际层、运输层、应用层
但是为了方便教学,教材将其与OSI体系结构(法律上的国际标准)相结合,构成了五层标准:
物理层、数据链路层、网络层、运输层、应用层。
物理层:解决使用何种信号来传输比特的问题
数据链路层:解决分组在一个网络(或一段链路)上传输的问题
网络层:解决分组在多个网络上传输(路由)的问题
运输层:解决进程之间基于网络的通信问题
应用层:解决通过应用进程的交互来实 ...
计算机网络-性能
0-Preview
终于大二下了(课少),刚好以后的课程对我的规划都是很重要的一部分。
计算机网络而言虽然我不学web,但是在以后搞侧信道说不了还能用上(大概)。
和之前的数据结构一样,会有很多篇笔记结课以后我再进行整合成一篇,防止博客被课程笔记充斥。
刚好借着笔记熟练一下typora的公式块
1-性能指标
1.1-速率
数据的传输速率,他也称为数据率或者比特率。
单位 : bit/s
1.2-带宽
(1) 表示某信道允许通过的频带范围,带宽的单位是赫
(2) 带宽用来表示网络中某通道传送数据的能力,因此网络带宽表示在单位时间内,网络中的某信道所通过的最高数据率。
1.3-吞吐量
吞吐量表示在单位时间内信道内的实际数据量。
1.4-时延
一端到另一端所需要的时间,也成为延迟。
1.4.1-发送时延
主机发送数据包所需要的时间,从发送第一个比特到最后一个比特的时间。也称传输时延。计算公式是:
发送时延数据帧长度发送速率发送时延=数据帧长度(bit)发送速率(bit/s)
发送时延与传输信道的长度没有任何关系
1.4.2-传播时延
在信道中传播一定的距离需要耗费的时间。
计算公式:
传播时 ...
PWN堆溢出unlink利用
HITCON Training lab14 magic heap
不太清楚堆题的流程,还是按照老传统 看保护 跑一遍 ida
可以对heap进行申请编辑和free操作,不知道是不是我只会unlink的原因,我感觉给了这三个基本可以确定能利用unlink了。然后 IDA 在看一下bss段有没有数组存放chunk。
这个也很好找,一般在 malloc时候会有一个数组:
堆溢出
这也是利用unlink的一个要求,至少能溢出一字节。寻找堆溢出漏洞点也很简单,和栈溢出差不多。
输入
gets,直接读取一行,忽略 '\x00'
scanf
vscanf
输出
sprintf
字符串
strcpy,字符串复制,遇到 '\x00' 停止
strcat,字符串拼接,遇到 '\x00' 停止
bcopy
1234567C//edit函数printf("Size of Heap : ");read(0, buf, 8uLL);v3 = atoi(buf);printf("Content of heap : ");read_input(heaparray[v ...
PWN堆漏洞汇总
0-堆漏洞
这篇文章属于堆漏洞的归档总结。会在之后遇到新的漏洞进行补充。
也算是 https://shangu127.top/2021/11/09/1109/ 文章的补充。
1-Double_free
该漏洞是指将同一个chunk free两次,通常情况下free两个chunk会报错是无法编译的,监测机制也很简单,就仅仅是对free变量与前一个进行对比,所以可以中间夹一个其他的实现:
1234Cfree(shangu1)free(shangu2)free(shangu1)
此时的 bins 中情况大概如下:0x20 —> shangu1 —> shangu2 —> shangu1
当再次申请堆时会出现 有两个指针指向同一个chunk
2-UAF(特殊的doublefree
3-堆溢出
堆溢出只能溢出到下一个 chunk,所以常见的利用方式是结合其他漏洞。
主要修改的地方有:
1、p位,就是inuse位,记录了上一个chunk是否被free
2、pre_size 和 size ,分别记录了当前一个chunkfree时前一个chunk的大小以及当前chunk包含chun ...