ret2libc2
先checksec,还是开了NX,就不能用shellcode了。
看ida
gets存在栈溢出漏洞,cyclic计算一下地址偏移量
偏移地址仍然是112,那么填充112个垃圾数据就能劫持返回地址。
在ida里看到有system的plt地址,但是没有找到/bin/sh,所以要手动把/bin/sh填充进去,然后有了binsh的地址,就能作为system的参数,这样就变成了ret2libc1。
然后是写ROPgadgets再次调用gets,把/bin/sh输入bss段里,这里bss段刚好有一个buf2可以放。
接下来是找到gets的地址。
就可以写exp啦
这里有两种方法,参见https://www.jianshu.com/p/c4780335b842
第二种用到栈堆平衡,就要先把gets的参数pop出来,pop到哪都无所谓,所以就ROP找一找pop的指令
随便用一个短的pop ebx
1 |
|
ret2libc2
http://example.com/2021/03/14/ret2libc2/