格式化字符串漏洞
# 格式化字符串原理
主要是几个格式化字符串使用的位置,用户可以控制格式化字符串的情况, 构造恶意的字符串,修改内存或泄露内存。
几个在漏洞利用中比较重要的格式化字符串, %p
, %n
%[parameter][flags][field width][.precision][length]type
1
parameter: 形式为
n$
,获取格式化字符串中的指定参数.length: 输出的长度
hh
,输出一个字节h
,输出一个双字节.type :
- n,不输出字符,但是把已经成功输出的字符个数写入对应的整型指针参数所指的变量
- p, 输出对应的变量值.
利用: %n$x
# 栈上的格式化字符串
在栈上的格式化字符串,我们可以使用 格式化字符串+拓展地址 的形式, 控制指针指向拓展地址即可。
# 堆上的格式化字符串
在堆上的格式化字符串,不能直接修改栈内空间的指针,也就不能带拓展地址, 泄露内存地址是没有问题的, 利用getshell的话, 需要
# 盲打
上次更新: 3/17/2025, 4:54:54 PM