TWCTF 2017-Freshen Uploader-writeup
任意文件读取漏洞。php弱类型比较。
Task
|
|
Solution
该题有两个flag。
有下载功能,比如点击第一个download后,链接为:
这里存在任意文件读取漏洞。访问:
得到download.php的源代码和第一个flag:
file_list是什么东西?我们读取一下index.php看看:
根据第一个flag,我们可以猜测第二个flag藏在file_list.php中。但直接读取是不行的,因为download.php的源码用stripos做了检测:
|
|
仔细看一下判断语句:
strpos(str1,str2)返回字符串str2在字符串str1中的位置。如果$filename
以file_list
开头,则stripos($filename, 'file_list')
会返回0,而采用的是!=
,也就是说可能存在弱类型比较问题:0 == false
。
绕过了stripos,怎么读取file_list文件?构造payload:
这样它会把第一个file_list当成文件夹,之后用两个../
返回上一层文件夹,并最终读取到file_list.php。
访问:
第二个flag: