Pwn

ret2text

2019-10-28  本文已影响0人  KoooOooooK

首先检查文件开了哪些保护

如图,可以看出文件开启了NX,即堆栈不可执行。
这样就不能把控制IP指向shellcode了。
检查文件信息

可以看出是32位的ELF可执行文件。
运行程序

可以看出程序流程是接受输入,然后输出文本。

将程序放入IDA分析。

可以看到此处有一个gets函数可以接受任意输入长度到栈上。

利用这一点可以覆盖返回地址

首先寻找覆盖多少位可以找到返回地址。
利用cyclic生成200个字符。

可以看出覆盖到112字节就是返回地址。

接着,咱们查看一下程序中的字符串信息。

找到了一个'/bin/sh'

然后,查看程序导出的函数。

main函数已经检查过了,只剩下secure函数了。将其反汇编出来。

看到程序调用了system('/bin/sh'),这意味着,只要将程序流控制到这个地方,就能获取shell。

所以将0x0804863A覆盖到返回地址。

编写payload。

from pwn import *

p = process('./ret2text')

p.sendline('a'*112 + p32(0x0804863A))

p.interactive()

可以看到获得了shell。

上一篇下一篇

猜你喜欢

热点阅读