![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习笔记
Darry-long
这个作者很懒,什么都没留下…
展开
-
学习笔记
攻防世界[pwn]welpwn 1.查看保护 没开金丝雀,再看看IDA 这里可以看到我们通过read输入的数据最终被传入到了v2中,可以通过echo这个函数经行栈溢出,但是如果直接通过函数,会发现程序异常终止,为什么呢这里是我一开始没想到的可以看看我的思路 2. 来看看这个函数,可以算出可以通过输入0x18个字符a来控制函数的返回地址,但是经过实践发现程序异常中断,为什么呢,原来我们最后输入的返回地址包含’\x00’这个终止符,导致函数读取到了这里就停止读取了,那该怎么办啊,可以发现这次函数溢出所需原创 2021-03-05 20:29:25 · 58 阅读 · 0 评论 -
学习笔记
题目来源 Jsarvis OJ level3 附件下载链接:level3.rar.f795bbaa1e4a3f9d467317d6df936c6b 这道题为典型的ret2libc 找到存在栈溢出的函数,很明显变量buf只有0x88字节的缓存空间,但是可以输入0x100字节的数据,所以存在溢出 然后利用write输出打印得到我们想要泄露的got地址,这里我是通过rop链0x8048519来清空write的三个参数,从而通过ret将eip再次指向vulnerable_function函数,达到两次栈溢出目的原创 2021-01-27 06:24:55 · 100 阅读 · 0 评论 -
学习笔记
题目来源 Jsarvis OJ level3(x64) 附件下载链接:level3_x64.rar.9169aec8b6cb4bfc3a0f5c50a7519004 这道题和上一道题的区别是这是一个64位程序 这里小结一下,32位程序的函数参数是存放在父函数的栈帧中的,在子函数调用的时候,父函数会将子函数需要的参数逆序地压入栈中,当子函数引入参数时,会通过[bp+8],[bp+c]…(逐各加4,32bit=4Byte可以这么理解)来引入参数。可以参考这个图: 而64位的程序它的前6个参数是依次存放在rdi原创 2021-01-27 08:16:02 · 147 阅读 · 0 评论