---
# System prepended metadata

title: 线下攻防赛总结

---

线下攻防赛总结
===

前言

本文写于2018年5月31日

2018年9月13日 更新一个新的总结：https://hackmd.io/s/Hypjn6D_X

算上这次已经打了两次线下赛了，第一次那个有点太菜。这次还算是准备了东西，但还是经验不足。。。。

主办方为了提示，向cms里加了shell，顺着这个shell类似于pop链一样向上审计很容易发现漏洞，可惜最后一个小时才看出来。。。

上次打的时候上了个waf结果被check down了，于是这次没敢。。。只用了一个删除新文件的脚本。结果还是有师傅能打出shell来，还是以前没见过的内存马，涨姿势了

第一名的师傅们开局五分钟就打了一波，那个时候我们还在找ssh的登录密码。。。log也没准备明白，总体还是缺乏经验。于是这次总结一下

两个cms：hxcms，xsite，都是很久没更新了，是入门审计挺好的cms，网上也有公开的漏洞

### 首先
---

分工要明确，一般来讲是一个人守两个人攻。

防守要做的包括但不限于：首先备份源码、上log、waf等前期工作、随时观察分数情况、随时闲逛服务器，手动/写脚本杀shell、攻击手那边挖出洞了得赶紧修补、没思路了可以适当关掉删新文件的waf让人来打，被打的shell一般都是批量打进来的，密码一般都一样，然后批量访问webshell也能蹭到不少分。

攻击要做的就是审计挖洞写脚本批量攻击，挖到洞后及时通知防守的老弟修复，如果顺便告诉怎么修复当然是最好的，比如说注释哪一行之类的，越简单粗暴越好。没思路了看日志摸别人的shell蹭分

### 内存木马/不死马
---

读取远程文件的内容写入$code中当作字符串，进入死循环，每次循环后等待五秒继续运行。前三行是最关键的，删除自身，不关闭且保持进程，之后就可以实现木马的功能了。

有几种方法应对这种木马：

1.ps auxww|grep shell.php 找到pid后杀掉进程就可以，删掉脚本是起不了作用的，因为php执行的时候已经把脚本读进去解释成opcode运行了

2.重启php等web服务

3.用一个ignore_user_abort(true)脚本，一直竞争写入（断断续续）。usleep要低于对方不死马设置的值。

4.创建一个和不死马生成的马一样名字的文件夹。

还有一些恶心的php木马在这里就不展开了

### log
---

记录任何访问，通过日志直接就能用别人的payload去打其他人

附一个log：https://github.com/wupco/weblogger

### 还有几点需要注意
---

waf很容易就被check down，所以要格外小心。但是也要有最基本的防御能力：

1、自动删除新增文件、全局日志

2、D盾/安全狗。实在不行直接把源码下载到本地查杀

3、现场审计一般是来不及的 ，用seay去扫。如果能知道是什么cms直接去搜漏洞就行，一般来讲伸出来的可能性不大，主要看的是对漏洞的快速反应能力。实在不行根据seay的结果去审计效率会高很多

4、一开始就把最初的源码备好份，如果真的check down也好还原





