![Bropper | 一个自动化的盲目ROP利用工具插图 Bropper | 一个自动化的盲目ROP利用工具插图](https://blog.eswlnk.com/wp-content/uploads/wpcy/e94ed13050bcd2b3df7aafa563dd5784.jpg)
引言
Bropper是一个基于Python的自动化盲目ROP利用工具,它是由斯坦福大学的Andrew Bittau在2014年发现的技术。
原理
大多数服务器(如nginx、Apache、MySQL)在与客户端通信时,canary和地址保持不变,即使存在ASLR和PIE。因此,我们可以使用一些经过教育的暴力破解方法来泄漏信息,并构建一个可行的利用。
利用流程
- 查找缓冲区溢出的偏移量
- 查找canary值
- 查找保存的寄存器(RBP / RIP)
- 查找停止gadgets
- 查找brop gadgets
- 查找写入函数(write / dprintf / puts / …)
- 泄漏二进制文件
成果示例
该代码库提供了3个自定义的漏洞示例,您可以直接运行或构建Docker镜像。
使用BROPPER将转储二进制文件:
$ BROPPER dump
然后,可以使用ROPgadget等工具从转储的二进制文件中提取所有ROP gadgets:
$ ROPgadget --binary dump
找到的唯一gadgets个数:235。
脚本预览
脚本使用方法
要使用此脚本,请按照以下步骤:
- 安装所需依赖:
python3 -m pip install -r requirements.txt
- 运行Bropper:
python3 bropper.py -t 127.0.0.1 -p 1337 --wait "Password :" --expected Bad --expected-stop Welcome -o dump
$ python3 bropper.py -h
usage: bropper.py [-h] -t TARGET -p PORT --expected-stop EXPECTED_STOP --expected EXPECTED --wait WAIT -o OUTPUT [--offset OFFSET] [--canary CANARY] [--no-canary] [--rbp RBP] [--rip RIP] [--stop STOP]
[--brop BROP] [--plt PLT] [--strcmp STRCMP] [--elf ELF]
Description message
options:
-h, --help show this help message and exit
-t TARGET, --target TARGET
target url
-p PORT, --port PORT target port
--expected-stop EXPECTED_STOP
Expected response for the stop gadget
--expected EXPECTED Expected normal response
--wait WAIT String to wait before sending payload
-o OUTPUT, --output OUTPUT
File to write dumped remote binary
--offset OFFSET set a offset value
--canary CANARY set a canary valu e
--no-canary Use this argument if there is no stack canary protection
--rbp RBP set rbp address
--rip RIP set rip address
--stop STOP set stop gadget address
--brop BROP set brop gadget address
--plt PLT set plt address
--strcmp STRCMP set strcmp entry value
--elf ELF set elf address
可以使用python3 bropper.py -h
查看脚本的帮助信息和可用选项。
📮评论