利用自己的应用程序

时间:2013-08-13 14:59:04

标签: c gdb exploit

我正在尝试通过以下教程学习如何进行缓冲区溢出:http://www.ouah.org/readmeneu.htm但我无法使漏洞利用起作用。

来源,exploit.c:http://pastebin.com/b95G2KK7和server.c:http://pastebin.com/PM4GdcT7。正在使用的shellcode是http://pastebin.com/fuGgDeAH

我修改了exploit.c和server.c以使它们运行。 用-fno-stack-protector编译server.c并将/ proc / sys / kernel / randomize_va_space设置为0.另外我测试了shellcode(gcc shellcode.c -z execstack; ./a.out; netcat 127.0.0.1 64713)它有效。

根据我的理解,exploit.c执行以下操作:

  1. 使用NOP填充缓冲区
  2. 将shellcode放在缓冲区的中间
  3. 使用想要的RET(0xbfff620)
  4. 填充缓冲区的末尾
  5. 发送缓冲区(包括shellcode)
  6. 然后程序的RET应该执行shellcode
  7. 所以我加载gdb并运行服务器程序。 执行漏洞利用程序时,它会产生分段错误并返回正确的RET地址。

      

    编程接收信号SIGSEGV,分段故障。   0xbffff620在? ()

    (gdb)'x / 400bx $ esp-200'的输出可以在网址上看到:http://pastebin.com/bCqphFNn它看起来是正确的..

    不幸的是,该程序没有在127.0.0.1 64713上打开一个端口。

    (gdb)show stack告诉我:

      

    eip = 0xbffff620;保存了eip 0x90909090

         

    由帧调用0xbffff62c

         

    Arglist在0xbffff62c,args:

         

    当地人在0xbffff62c,前一帧的sp是0xbffff628

         

    保存的寄存器:

         

    ebp at 0xbffff620,eip at 0xbffff624

    我不确定现在该如何继续;我怎样才能使漏洞利用起作用?我错过了什么?

    *已更新*

    我使用(-g)和(-z execstack)选项编译了server.c.当从gdb工作时:漏洞似乎有用(它在64713上打开一个端口)。但是当我尝试使用nc或telnet连接到该端口时,server.c接收到一个SIGSEGV信号(在0xbffff6fc上);端口64713仍处于打开状态,但不响应任何命令..

    没有gdb:执行./exploit时,server.c仍会收到分段错误。没有打开端口。

0 个答案:

没有答案