使用burpsuite进行目录遍历,发现index.php.bak备份文件
1 <?php 2 include_once "flag.php"; 3 4 if(isset($_GET['key'])) { 5 $key = $_GET['key']; 6 if(!is_numeric($key)) { 7 exit("Just num!"); 8 } 9 $key = intval($key); 10 $str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3"; 11 if($key == $str) { 12 echo $flag; 13 } 14 } 15 else { 16 echo "Try to find out source file!"; 17 }
代码第11行存在问题,当数字类型和字符类型进行比较时,php会尝试将字符串转化为数字类型,这里会将str变量转化为123,从而产生了绕过,获取到了flag
payload:
http://037ce71e-ea0f-46ae-9089-964fc9b48628.node3.buuoj.cn/?key=123