现阶段就是复现难题的同时四处找题目刷,今天开始做pwnable.tw。结果这第一道名为start的题目就做了挺久的。
start
和国内常见的起始题目完全不同的风格,程序通过很短的汇编实现了write、read
看着不像是用ROP的做法,保护全关了,这里考虑利用NX关闭,堆栈可执行实现shellcode
光看汇编比较抽象,自己画一下示意图
这个是起始的栈示意图,注意到程序开头push了esp,并且后边实现了write,而且read的写入长度参数是0x3c,可以做到溢出覆盖返回地址。利用write将栈中的esp输出
图右是第一次覆盖之后的,利用0x08048087这一段汇编输出esp
这是泄露出来的esp
再次覆盖后示意如图,执行到esp+14h就到了retn,就可以用我们自己的eip控制程序执行的ip,从而执行shellcode
远程反应比较慢,而且目有点复杂,还需要自己翻一下才能找到flag。
这题使我感受到了比较专业的pwn学习网站的质量,做完觉得是比较简单的题,但是刚拿到手也是没有头绪的。
题目风格也是很二进制的,蛮不错的
pwnable.tw值得继续刷
exp
1 | from pwn import* |
如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !