当前位置:首页|资讯

【pwn27 第九届中国海洋大学信息安全竞赛 padfmt】

作者:K3yB0ard发布时间:2024-10-16

首先看下保护

checksec

放IDA里面分析一下:

main

看下init

init

init函数初始化同时将flag读入main的栈帧上。看下padded_work

padded_fmt

给了两次wrap printf的格式化字符串利用机会。

wrap printf
filter

过滤函数过滤掉了$符号,将其替换为了空格,一定程度上影响格式化字符串利用。

攻击思路:

1、程序主要是自己给了一个wrap_printf,在原始的格式化字符串上禁用了$符号

2、程序在初始化的时候将flag读到了栈上,但是在很高的地址,直接泄露难以做到。

3、使用多个%p泄露栈地址,得到其中跟flag位置具有固定偏移的地址(exp中的victim

4、第二次输入时将victim地址作为字符串一部分放到栈上去,再计算好偏移使用%s泄露。

【注意】

1、第二次输入的时候victim地址要和前面的字符串使用\0隔开,否则地址会被当做字符串数据输出

2、填充%p的时候注意栈上的0x8对齐

完整攻击脚本:

攻击结果:

exp result

By  Del0n1x

Keyboard


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1