记录时间:2019.11.23
比赛时间:2019.11.23
首先介绍一下这次的线下赛规则,采用了另一种AWD模式,与我上一次参加的“广东省强网杯”的线下赛AWD略有区别。每支队伍只会遭到平台方的EXP,CHECK,另外队伍只可通过提交flag或防御脚本得分。每支队伍都是独立环境,源码直接可得。
具体赛制网上可查,不再复述,感觉这种赛制少了很多大佬“搅屎”的乐趣,但好处是比赛过程不会太过紧张激烈。
赛题
开始分析
由于有源码了,所以常规操作是直接丢进Seay和D盾扫描。D盾并没有扫描出什么,Seay扫描了一大堆东西,但基本都是仅能进行参考而已。
由于过滤比较完善,就先不测试数据库注入了,改为探测文件上传:
跟踪upload
定位文件上传点,可知(直接猜都知道)上传点在/admin页面下,访问/admin目录,是需要身份认证的。
然后我查看全局config
文件(本地),得到了数据库的配置信息。里面有数据库信息,和后台管理员的cookie。
然而这些信息并不足以让我登录进后台,当时也没想到改cookie进入后台。
重置网站
由于我已经知道没有SQL注入了,所以就找其它方法了。生产环境install后之后一般都会生成个install.lock
文件,但这题没有,我就随便测试了一个/install
。不过这个文件源码里面也能看到:
当时是觉得真的牛批,数据库基本信息都有了,所以数据库信息填写正确。然后除了配置管理员,其它都原封不动:
新挑战
后台留言,添加标签什么的我直接就忽略了,本来也不怎么会利用。
想直接传.php
文件,不用想都知道有过滤了,当时直接跳过测试(机智)。
当时想着是直接在那里修改,即添加php进去白名单,但多处操作都失败,查看源码:
它会把php
改成x
,即阻止用户添加php白名单,进而阻止上传webshell。
然后说说我那时的坑:
1,添加.phtm
,然后发现不能用,实际上这个需要配置一下环境,才能识别并当作php文件。
2,在.html
文件内添加<?php ?>
,不过好像会隐藏掉,即不执行不解析。
emmm,似乎卡住了
骚操作,getshell
有空看代码还真不如在网站上随便点点,到处玩玩:
看到了可以dump数据库:
先dump下来再说,万一有flag呢…后来没找到flag,就想着在一些页面直接插入php语句,改一下路径什么的,收获几乎没有。然后又想load file
进行读flag,不过当时有点记不太清指令了。。。
我就添加了php
进去,然后在网站上导入本地备份(修改过后的.sql文件),成功执行。然后去写文章,顺利看到:
发表后,浏览文章,点击获得插件地址,即webshell地址,用菜刀或蚁剑连接,getshell!!
放一张比赛的flag鼓励自己
关于patch
由于这漏洞利用点太大了,我尝试过删除install.php,但防御失败。
想添加数据库信息过滤,但觉得很有难度且不符合生产需求(过滤php字眼)。
现在想想,应该把网站上的数据库相关功能直接删了就行了…