前言
近期在整理题目的时候,发现了一道质量不错的Web题,出自2019 TMCTF Final,特此记录一下。
信息搜集
题目描述:
Hack the following server. http://10.0.106.(team number)/ User NamePassword guestpassword admin(Unknown) Note: You do not have to use way of brute force or DoS to solve this challenge. Please do not put a load on bandwidth or disk space.
题目给了一个网站,具备以下2种功能:
upload:http://10.0.106.10/tmctf2019/upload.php download:http://10.0.106.10/tmctf2019/download.php
对于上传,可以指定public / private上传,对于download也可以指定public / private下载,上传至public的文件,只能用download的public文件下载。
也就是说题目给了我们一个文件上传,一个文件下载,而对于目录的划分(public / private),现在看不出多大作用来。
随便测试了一通,发现文件上传时,会拼接sha256的后缀,例如上传:
1.jpg
得到的文件名会变为:
1.jpg_sha256(salt+'1.jpg')所以无法控制后缀,奇热而尝试登陆功能注入和弱密码爆破登入也无法突破,无法将身份转换为admin,陷入僵局。
那么自然想到扫一扫目录,可以发现文件夹:
http://10.0.106.10/tmctf2019/include/
该文件夹并没有做权限控制,我们可以看到如下4个文件:
files.inc functions.php import_theme.inc login.php
显然我们只能读取.inc文件,php文件会被解析无法直接访问源码。
import_theme.inc
files.inc
代码审计