1.题目

2.IDA分析


3.流程分析
流程很简单,输入buf,这里不存在溢出,然后进入echo方法,将buf复制到s2,当遇到\x00就结束。这个条件会导致p64(addr)后面的内容被截断(地址经p64包装后肯定会出现\0x00)。栈结构如下:

也就是说,s2只能复制buf前面32个单元的内容。为了使32位后面的内容得以执行,我们需要在ret位置跳去执行四个pop指令,去掉buf前32位内容(也就是复制到s2里面的这些内容),这样就能连贯执行32位之后的内容了。
所以,目前payload = ‘A’ * 24 + p64(addr_pop4)
观察ida的function区没有发现system方法,string区没有发现/bin/sh。题目也没有给出libc,所以只能溢出write(为啥是write?因为write好用!)的地址,然后使用ROPSearcher获取libc里面的system和/

本文详细介绍了攻防世界welpwn题目的解题过程,通过IDA分析,发现存在栈溢出,但无直接利用的system或/bin/sh字符串。通过两次溢出,第一次利用POP指令清除栈上内容,改变执行流程,获取write地址,然后利用ROPSearcher找到libc中的system和/bin/sh。最终构造两次不同的payload实现目标。
最低0.47元/天 解锁文章
541

被折叠的 条评论
为什么被折叠?



