前言
这次PCB-AWD
打的真是憋屈,话说第二天pwn题都全解了,只因为手速太慢(辛苦队友手交flag),导致最后离奖金还差一点,所以这次必须要开发一套二进制AWD自动化工具,这样我就可以喝茶等着队友的exp
了。
工具简介
主要是两个主文件:
一个是命令行模式的`ssh`自动化连接工具 AutoBinary.py
一个是pwn题的批量自动化提交工具 batch_submit.py
0x1 AutoBinary
设计思路
主要利用paramiko
模块建立ssh
和sftp
连接,然后通过命令执行达到一键dump
的目的。
ssh
有两种登录方式:
- 用户名+密码
- 用户名+私钥
此工具已将两种方式集成
usage: AutoBinary.py [-h] [--dump] [--find] [--get] [--put] [-c COMMAND]
[-ip HOSTNAME] [-P PORT] [-u USERNAME] [-p PASSWD]
[-k KEYFILE] [-r REMOTEPATH] [-l LOCALPATH] [-v]
optional arguments:
-h, --help show this help message and exit
--dump To dump binary source
--find To get the pathslist of flag
--get To dump choose file from remote host,but if you want
get without losting privilege you prefect using [scp
-P user@hostname:remote_file local_file] to get file
--put To put choose file to remote host,but if you want
put without losting privilege you prefect using [scp
-P port local_file user@hostname:remote_file] to put
file
-c COMMAND, --command COMMAND
To exec command by ssh
-ip HOSTNAME, --hostname HOSTNAME
Input remote hostname[ip]
-P PORT, --port PORT Input remote ssh or sftp port
-u USERNAME, --username USERNAME
Input remote ssh username
-p PASSWD, --passwd PASSWD
Input remote ssh passwd
-k KEYFILE, --keyfile KEYFILE
Input ssh key file
-r REMOTEPATH, --remotepath REMOTEPATH
Input remotepath file name to dump or overwrite it
-l LOCALPATH, --localpath LOCALPATH
Input localpath file name
-v, --version Edit by BadRer V1.0
主要功能参数:
--dump 一键`dump` pwn题的源文件,用于`dump`用户工作目录下的单个源文件
--find 一键获取服务器上的`flag`所在的路径
--get 从远程服务器上获取文件 类似`scp -P port user@ip:remote_file local_file`
--put 上传文件到远程服务器上 类似`scp -P port local_file user@ip:remote_file` ,经过测试发现文件权限会发生变化,因此还是推荐使用`scp`
--command 通过`ssh`执行一些简单的命令,最常用的就是列目录
常用的命令:
python AutoBinary.py -ip 192.168.43.252 -P 22 -u pwn -p 123 --dump
python AutoBinary.py -ip 192.168.43.252 -P 22 -u pwn -p 123 --find
python AutoBinary.py -ip 192.168.43.252 -P 22 -u pwn -p 123 --command 'ls'
python AutoBinary.py -ip 192.168.43.252 -P 22 -u pwn -p 123 --get -r '/home/pwn/pwn1' -l pwn1
python AutoBinary.py -ip 192.168.43.252 -P 22 -u pwn -p 123 --put -l pwn1 -r '/home/pwn/pwn1'
测试
经过本地测试通过用户名密码登录的方式可以成功运行
通过用户名和私钥登录的方式还有待测试。
0x2 batch_submit
批量自动化提交工具,等到队友的exp
便可以打遍全场!
设计思路
通常pwn
的批量自动化分为三步 :
- 写自动化提交(这得看主办方是否提供相应的接口,否则只能手动交
flag
了,哈哈) - 写出
exp
自动获取flag - 批量轮询所有ip,自动获取flag并提交
我实现了多线程的方式,并在本地测试了两个ip
的情况,对于线上赛20多个ip
的情况还有待实战!
使用说明:
- 首先完善
autoUtil/auto_submit.py
中的submit_flag
函数实现自动交flag
- 完善
autoUtil/auto_getflag.py
中的auto_get_submit
函数 实现自动cat flag
并且提交,此时需要使用有效的exp
- 运行
batch_submit.py
修改对应的iplist
和port
,以及采用何种批量方式
批量化实现思路:
多线程
利用threading
模块,对于两个主机的批量测试通过,针对大量线程不知运行效果如何。
多进程
下一步可以尝试的方向。
注意事项
此工具所在路径不能包含中文字符
此工具仅在mac以及ubuntu下测试通过,windows尚未测试。
后期的一些设想
可以再增加一些自动探测漏洞,自动种马的功能,并针对此工具的bug进行完善。
写在最后
由于某些特殊原因,不宜将此上传至github
,基于交流分享的精神,特将思路和部分代码分享出来。
如果各位师傅对此感兴趣可以联系我一起合作,欢迎大家一起交流。QQ:1057947291
链接:https://pan.baidu.com/s/1VgrStl6-qiki7LAajSVFDw 密码:1lpo
点击收藏 | 0
关注 | 2