-
python2
-
requests(pip安装即可)
-
ConfigParser(pip安装即可)
-
pwntools(pwn题依赖,pip安装即可)
该项目主要是用来在AWD比赛中批量自动提交flag时使用的。
配置好config.conf
之后,根据脚本的功能,修改pwn_attack.py
或 web_attack.py
或flag.txt
,之后直接python automatic.py
即可。
提前使用env_test
环境来进行本地测试。
运行效果:
文件名 | 用途 |
---|---|
config.conf | 配置文件,所有的参数配置 |
resolve_config.py | 解析config |
pwn_attack.py | 调用pwn攻击获取flag |
web_attack.py | 通过web访问获取flag |
submit.py | 向平台提交flag |
log.py | 生成日志 |
automatic.py | 主要运行文件 |
ip_list
所有靶机的ip列表(因为现在很多比赛的ip非常乱,所以自行生成列表使用比较稳妥,注意别加入自己的靶机地址)
script_function
脚本功能(web & pwn & local)local
: 从本地的flag文件中读取flag提交(用于攻击脚本无法自动化的情况)web
: 根据url进行攻击,并访问获取flagpwn
: 根据ip与port,利用exp批量攻击获取flag
-
submit_method
可以通过curl或requests来进行提交,看比赛运维平台,详细在submit.py里修改curl
: 使用curl提交flagrequests
: 使用requests模拟web访问提交flag
-
submit_addr
平台提交flag的地址 -
token
队伍token -
success_request
判断提交的flag正确的字段(需要根据手动提交的结果来确定,或根据官方文档来确定) -
failed_request
判断提交的flag错误或其他故障的字段(需要根据手动提交的结果来确定,或根据官方文档来确定) -
round_time
比赛每轮时间,单位秒 -
rounds
比赛总轮次(可以不配置,意义不大) -
submit_wait
每次提交flag之间的停顿间隔(秒),部分平台会是提交间隔,没有就写0
flag_file
本地flag
列表文件保存的位置
- 到
web_attack.py
或pwn_attack.py
中进行修改
当需要单次运行或进行单次测试时,可以对各个模块独立进行单次测试:
pwn
:python pwn_attack.py 10.10.10.10
(测试ip是否能够拿到flag)
web
:python web_attack.py 10.10.10.10
(测试ip是否能够拿到flag)
submit
:python submit.py flag{123123}
(测试提交flag是否成功,需要在config.conf中先配置好submit地址等)
- 最好提前使用
env_test
环境进行测试一下,熟悉一下使用方法。env_test
的使用方法在env_test/README.md
中 - 友情提醒,使用前
git pull
一下,代码会不定期更新。 - 当使用
web
模块时,一定要修改相应的header
和data
。 - 当使用
pwn
模块时,一定要修改相应的exp
脚本。
- 兼容
python2
及python3
- 将
config
配置集成到web.py
里 - 对每个后台进程进行监控
- 生成图形化配置界面
v1.2
完善了env_test测试环境,用于测试脚本的运行
删除了原有的ip生成方式,改用了固定的ip列表,以应对复杂的ip环境
抛弃了urllib2,改用requests
submit新增了curl的提交方式
优化了submit、web、pwn的脚本
添加了单次测试的功能
v1.1
- 修改了target ip的生成方式,来适应不同的网段;
ip_mode:"172.19.%d.30" start_ip:1 end_ip:8 skip_ip:3,5
==>['172.19.1.30', '172.19.2.30', '172.19.4.30', '172.19.6.30', '172.19.7.30', '172.19.8.30']
ip_mode:"172.19.30.%d" start_ip:1 end_ip:8 skip_ip:3,5
==>['172.19.30.1', '172.19.30.2', '172.19.30.4', '172.19.30.6', '172.19.30.7', '172.19.30.8']
- 将web_flag.py的url调用进行了优化,不再采用url.txt
- 将urllib2替换成requests.post,增加cookies配置