RacePWN(竞争条件框架)
1.描述
RacePWN 是一个 librace 库和 racepwn 实用程序,旨在通过使用 TCP 连接的协议测试竞争条件攻击。
1.1. librace
librace是一个用 C 编程语言编写的库,旨在通过网络创建并向单个主机发送多个请求。该库支持两种竞争类型:
- 并行– 在此模式下,为每个请求创建一个单独的连接。请求同时发送(使用非阻塞套接字写入)。可选地,发送请求可以分为 2 个部分。第一部分是发送请求的主要部分,第二部分是在一段时间后发送请求的最后一部分。可以设置延迟时间以及最后一部分的大小。
- 管道– 在这种模式下,请求被粘合在一起成一个大请求,通过一个连接发送。
1.2. racepwn
racepwn – 一个用 golang 编写的实用程序,通过用 json 编写的配置设置参数来实现 librace 接口。
配置文件示例
[ { "race": { // Setting race parameters "type": "paralell", // race mode "delay_time_usec": 10000, // time delay between two request parts "last_chunk_size": 10 // last request chunck size }, "raw": { "host": "tcp://localhost:8080", // hostname and port "ssl": false, // use ssl flag "race_param": [ { // race data parameters "data": "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n", // raw HTTP request "count": 100 // packets count } ] } } ]
支持两种操作模式。作为控制台实用程序和 Web 服务运行。
控制台实用程序:
在此操作模式下,配置文件被输入到应用程序输入中。应用程序向服务器发出请求。
racepwn < config.json
网络服务:
在此模式下,该实用程序开始作为 Web 服务运行。要运行该实用程序,您需要POST request
在路径上创建一个/race
包含配置文件内容的配置文件。必须使用-hostname
标志指定主机名和端口。
racepwn -host "localhost:8080"
例子
curl -i -X POST localhost:8080/race --data @<(cat config.json)
2. 安装
2.1. 依赖项
- clang 或 gcc
- golang
- libevent (libevent-dev)
- openssl (libssl-dev)
- 构建
2.2. 构建
要开始构建过程,请运行./build.sh
。
警告:该版本仅针对 Linux 进行了测试。
2.3. 为 MacOS 构建
- 安装依赖项
brew install go openssl libevent cmake gcc
- 导出 LIBRARY_PATH
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
- 建造
./macos_build.sh
2.4. 与 Docker 一起使用
- 构建并运行
docker build -t racepwn .
docker run -it racepwn bash
- 启动应用程序
racepwn < /home/config.json
3. 如何操作
- HTTP2 支持。
- HTTP 响应解析。
- Python 的绑定。
国内下载链接
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END