Skip to content

AWD批量攻击脚本(Web/Pwn通用),通过bash编写,远程信息采用参数传入exp,通过多进程方式实现同时攻打,阻塞超时自动结束进程。

Notifications You must be signed in to change notification settings

1337536723/awd_script

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

awd_script

AWD批量攻击脚本(Web/Pwn通用),通过bash编写,远程信息采用参数传入exp,通过多进程方式实现同时攻打,阻塞超时自动结束进程。

各位师傅,下面批量脚本已运用在多次线下awd比赛中,其中web/pwn都运用过,各位web|| pwn师傅给个星是对我最大的支持,谢谢!

文件目录

.
├── init : 为每个题目创建文件夹和初始化文件
├── init_hosts : 规划队伍ip和端口
├── attack : 批量攻击脚本
├── exp : awd pwn exp脚本 [自己使用]
├── hosts: 攻击靶机远程信息,ip:port
├── README.md
├── submit_flag: 批量提交flag脚本
├── upload: 文件上传脚本 [PWN使用]
└── upload: 文件上传脚本 [PWN使用]

批量如何使用?

attack脚本就是批量攻击脚本,攻击脚本如下。

#! /bin/sh
# A script for awd loop attack

attack_times=10000 # 总共攻击循环次数,设置大一点,就不用管了
round_wait_time=540 # 下一轮次的等待时间,也就是flag的刷新间隔时间
wait_submit_time=20 # 在实现一次循环攻击后,等待多久调用自动批量提交flag脚本,根据自身exp多久拿到flag来调整,web一般短一点,而pwn的话可能要长一点。
log_file="logs" # 输出的日志文件
run_time=3m # 运行exp多久后自动杀掉,有时候会出现阻塞现象,导致卡死,采用超时杀掉进程即可。
next_attack_time=0.2 # 一个循环中,下一个攻击的时间,0.2s基本可以了,若自己电脑性能一点的话,可以设置小一点。

log() {
    t=`date "+%H:%M:%S"`
    m="[$t]$m"
    info="\033[43;37m $m ]\033[0m"
    echo -e "$info"
    echo -e "\n$m" >> $log_file
}

attack() {
    rm flags
    for line in `cat hosts`;do
        timeout --foreground $run_time python ./exp $line & # 调用exp,传入远程信息。
        sleep $next_attack_time # 两次攻击之间的间隔时间,不要设置为0,不然会出现莫名奇妙的错误
    done
    echo -e "\x1b[47;30m Waitting $wait_submit_time s to submit flag\x1b[0m"
    sleep $wait_submit_time # 等待提交
    echo -e "\x1b[47;30m Submiting flag\x1b[0m"
    python3 ./submit_flag # 打完一次批量后,自动提交flag,若批量提交flag脚本还没实现,可以注释掉
}

for((i=1; i <= $attack_times; i++)); # 循环攻打
do
    m="-------- round $i --------"
    log $m
    attack
    echo -e "\x1b[47;30m Waitting next round\x1b[0m"
    sleep $round_wait_time # 等待下一轮次
done

每次攻击循环,会依次遍历hosts文件中的远程信息,采用多进程方式进行攻打。

单个攻击命令执行如下

timeout --foreground $run_time python ./exp $line &

而$line是从hosts文件取出来的单行信息,用于给exp传入远程host信息。

hosts文件格式是 ip:port

172.20.5.1:6022
172.20.5.2:6022
172.20.5.3:6022
172.20.5.4:6022
172.20.5.5:6022
172.20.5.6:6022

在exp中处理接受一下参数即可,如下。

server_ip = sys.argv[1].split(':')[0]
server_port = int(sys.argv[1].split(':')[1])

接受到的信息,在细微调整一下exp即可。

攻击成功后,在exp中将flag写入flags文件中,方便根据平台接口实现批量提交flag。

[PWN] 拿到shell后建议采用如下方式写入flags

def cat_flag():
    flag_header = b'flag{'
    sleep(1)
    sl('cat flag')
    ru(flag_header)
    flag = flag_header + ru('}') + b'}'
    write_to_flags(flag + b'\n')
    write_to_logs(b'\nexploited: ' + server_ip.encode() + b':' + str(server_port).encode() + flag)
    exit(0)

def write_to_flags(d):
    fd = open('./flags', 'ab')
    fd.write(d)
    fd.close()

def write_to_logs(d):
    fd = open('./logs', 'ab')
    fd.write(d)
    fd.close()

Web的话师傅们自行调整下。

About

AWD批量攻击脚本(Web/Pwn通用),通过bash编写,远程信息采用参数传入exp,通过多进程方式实现同时攻打,阻塞超时自动结束进程。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 73.7%
  • Shell 26.3%