最近备战国赛分区赛,开始在bugku上在线练习AWD,记录一下。

代理服务器配置

需要VPS

bugku的awd设置了IP白名单,只有在IP白名单里才能正常访问靶机。

emm,实验室的wifi不知道为什么,明明把公网IP加入了白名单,但是不能正常访问靶机(不太懂。

所以我特意架设了代理。设置服务器的IP为白名单就可以流畅地连接上靶机。

X-UI安装

X-UI或者Xray都可以,只是我先看到X-UI的教程(

vaxilu/x-ui: 支持多协议多用户的 xray 面板 (github.com)

只需要简单的一行命令就可以完成安装

1
bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh)

安装完成后就可以打开web页面配置代理了。

image-20230611225744223

有的教程说是打开所有端口 (lll¬ω¬)

其实不需要,只需要把web界面的端口,需要用到的代理端口打开即可,全都开可能会有安全隐患。

代理配置

在入站列表配置代理

image-20230611230056614

vmess

vmess协议的,比较简单,不需要配证书。默认的配置就可以使用了。

image-20230611231024967

点击二维码,复制链接,

image-20230611231049258

然后会得到一个

1
vmess://xxxxx

这样的链接。不能直接使用,需要转换为clash配置文件。

网上有很多现成的在线转换,但是安全起见,还是下了一个离线的工具

tindy2013/subconverter: Utility to convert between various subscription format (github.com)

下载后运行,web端访问

1
http://127.0.0.1:25500/sub?target=clash&url=vmess%3A%2F%2FewogICJ2IjogIjIiLAogICJwcyI6ICJhd2QxIiwKICAiYWRkIjogIjEyOS4yMTEuMjA4LjEyMyIsCiAgInBvcnQiOiA2NjY2LAogICJpZCI6ICJmYmNjNDdhZC01ZTdkLTRjYzYtOWVkZS1mZTxxxxxxxxx

即可得到配置文件内容(注意url编码)。

将配置文件挪到clash就能用了,

image-20230611232047682

socket

另外配一个代理是用于终端ssh连接的,和vmess一样,默认配置也足够了。

image-20230611233344090

配置完成后,在终端工具配置代理服务器

SOCK5类型,配置主机ip,端口,账号,密码即可连接。

我这里vmess主要用于web端的访问,socket主要是用于连接服务器。

其他选手地址扫描

自己写的。多线程,通过访问web端检测,还有一种是通过nc连

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import requests
import concurrent.futures
import sys


headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
"Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
"Accept-Encoding": "gzip, deflate",
"Content-Type": "application/x-www-form-urlencoded",
"Connection": "close",
"Upgrade-Insecure-Requests": "1"
}
result = []
port=[]

def scan(ip):
try:
res = requests.get(f"http://{ip}", headers=headers, timeout=3)
if res.status_code == 200:
result.append(ip)
port.append(ip.split('.')[0].split('-')[-1])
print(result)
except requests.exceptions.RequestException:
pass

def main():
with concurrent.futures.ThreadPoolExecutor(max_workers=10) as executor:
futures = []
for i in range(1, 256):
ip = target.replace('X', str(i))
futures.append(executor.submit(scan, ip))
concurrent.futures.wait(futures)

if __name__ == "__main__":
target = sys.argv[1]
main()

用法:

1
python3 bp.py 192-168-1-X.pvp2469.bugku.cn(当场awd的地址)

有时候平台问题,会扫不出来,用下面这个,时间会比较久一点,但是稳定。

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash

for i in {1..255}
do
ip="192-168-1-$i"
curl_output=$(curl -s http://${ip}.pvp2469.bugku.cn/acp/index.php)
if [[ $? -ne 0 ]]; then
echo "${ip}"
else
echo "Curl success for host: ${ip}"
fi
done

需要dos2unix转一下文件格式。

用法:

1
bash bp.sh

(需要先手改一下里面的地址)

除了白名单和扫描地址之外,剩下的就是正常的awd流程。(但是没有check机制

用来练习awd流程还是可以的,线下赛注意check,还有是否允许上通防