BUUCTF-Web-BackupFile
考察内容: PHP弱类型、敏感文件泄露
解题思路:
根据题目给出的说尽量找到源文件,再根据题目名字应该是个备份文件,做题老套路…查看源码、用dir扫一下网站,果然发现了index.php.bak文件发现是PHP的代码,于是进行审计。
源码解读 :
<?php
include_once "flag.php"; //验证是否包含这个文件
if(isset($_GET['key'])) { //检测变量是否已设置并且是否为非空
$key = $_GET['key'];
if(!is_numeric($key)) { //如果$key不是数字或数字字符串 输出exit
exit("Just num!");
}
$key = intval($key); //将$key转换为整数
$str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
if($key == $str) {
echo $flag;
}
}
else {
echo "Try to find out source file!";
}
第一个if用只需用key传一个非空的值即可满足,然后第二个if,输数字,就不会触发exit, 所以,str在和key进行比较的时候,str会转换为123 。(= = 为弱比较,整数和字符串类型相比较时。会先将字符串转化为整数然后再进行比较。比如a=123和b=123abc进行==比较时。则b只会截取前面的整数部分,即b转化成123。)
所以这里在这里传一个参数?key=123&str=123就可以拿到flag
构造payload: http://f7198eb8-6c9b-49c6-bcbb-7802d90e71de.node4.buuoj.cn:81/?key=123&str=123