缓冲区溢出
如梦如幻uuu
这个作者很懒,什么都没留下…
展开
-
【1】缓冲区溢出 strcpy
本实验是一个最基本的缓冲区溢出样本,它让我深入浅出的体验了通过缓冲区溢出执行shellcode的感觉,原理基本就是strcpy()函数没有检查copy的长度而导致的溢出原创 2019-04-29 21:02:16 · 4578 阅读 · 0 评论 -
【2】 缓冲区溢出 一个字节溢出 覆盖EBP
由于nstrcpy()函数,尽管它表面上对copy的长度进行了限制,但是它不小心在for循环中使形参可以等于输入长度len,这就造成存在溢出一个字节的可能性,而该字节恰好可以覆盖到buf所在函数的(foo函数)所保存的旧的ebp的最低位,从而使得该ebp出现在buf之间,最终在指定位置构造返回地址即成功达到溢出目的原创 2019-04-29 22:19:56 · 2784 阅读 · 0 评论 -
【3】 缓冲区溢出 符号位溢出 运算溢出
本文主要介绍通过运算溢出的符号位溢出,以绕过限制长度,最终达到溢出目的。原创 2019-04-29 22:20:22 · 2035 阅读 · 1 评论 -
【4】缓冲区溢出 两次tfree产生溢出可能(类似双向链表删除)
出现漏洞的原因,是先为p与q均申请了一段空间,这样它们都得到了对应的指针值,而后释放后,又为p申请了1024的空间,并且可以覆盖到q原本的地址,这样我们利用覆盖的原本的q的空间,构造q的chunk,在之后进行tfree的时候,使得返回地址的内容修改为payload的基址,从而达到溢出目的简而言之就是构造了个位于返回地址的指针指向payload原创 2019-04-29 22:31:27 · 2391 阅读 · 0 评论 -
【5】 缓冲区溢出 格式化字符串 snprintf
主要是利用格式化字符串漏洞来达到溢出目的,并且借用snprintf的特性,即在遇到格式化参数之前会先将正常的字符复制到指定区域中,最终通过字节大小的计算,利用%n向指定地址写入特定的返回地址原创 2019-04-29 22:47:59 · 5729 阅读 · 0 评论 -
【6】 缓冲区溢出 一个字节溢出 指针修改内存
在foo函数之中多了一个指针变量p与一个常量a,并且在执行完nstrcpy()函数之后,执行了*p=a的语句,而p与a的位置与ebp的相对关系不变,所以这就给了我们修改任意地址任意值的可能性(有效地址),而在之后通过跟踪_exit()函数,知道它利用jmp指令去跳到一个指针中存放的地址,故而通过修改其jmp的指针中的地址,最终直接jmp到了payload执行shellcode原创 2019-04-29 23:03:30 · 1535 阅读 · 2 评论