buuctf-pwn jarvisoj_fm题解(学习过程持续更新)
2026/8/11 4:42:03 网站建设 项目流程

本人也是在自学过程,主要目的也是记录学习过程,有些地方做的不太好,都是按照自己理解进行讲解的(不专业),欢迎大家指出问题

此处我将文件命名为pwn_fm

checksec pwn_fm查看一下保护机制

可以看到这是一个32-bit的文件,并且Canary,NX保护开启

将文件拖入ida,按F5将汇编代码转换成c语言代码,得到

可以看到printf(&buf)存在格式化字符串漏洞,当x等于4时得到shell。所以我们只需要将第n参数的内容改成x的地址,然后利用%n$n将x的值改成4,而且这里输出的字符串总数也就是我们x的地址,本来就是4个字节

(%n不输出任何字符,而是把当前已经输出的字符串总数,写入到对应参数所指的地址中)

回到虚拟机

gdb pwn_fm 动态调试一下

b *0x804859d(第一个read的地址,可以在ida里得到)

r

n

AAAAAAAA

stack 24

我们从此题的0xffffced4开始数第一个参数,到我们输入的AAAAAAAA就是第十一个参数

q

nano exp.py 开始写攻击脚本

payload中的0x804a02c是x的地址,在ida里双击x可以看到,%11$n中的11就是第十一个参数,在上方已经讲解过了

保存退出

python3 exp.py

得到flag

CTF2{55a73db9-6d7e-45cf-98f4-0360856c0966}

此题完

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询