01、题目简介
02、解题步骤
启动并访问靶机

根据访问网页提示,使用目录扫描工具找到正确的文件路径index.php.bak,文件代码如下:
<?php
include_once "flag.php";
if(isset($_GET['key'])) {
$key = $_GET['key'];
if(!is_numeric($key)) {
exit("Just num!");
}
$key = intval($key);
$str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
if($key == $str) {
echo $flag;
}
}
else {
echo "Try to find out source file!";
}
isset($_GET['key'])用来检查 URL 参数中是否有key,如果没有则输出 "Try to find out source file!"
is_numeric($key)用来判断变量是否为数字或数字字符串如果$key不是数字或数字字符串,直接输出 "Just num!" 并退出。
$key = intval($key),intval() 会将变量转换为整数。如果$key已经是数字或数字字符串,就取其整数部分(截断小数)if($key == $str)当比较一个整数和一个字符串时,字符串会被转换为整数,然后进行,比较,此处使用 == ,左边$key是整数,右边$str是字符串从字符串第一个字符开始,如果它是数字或正负号,则连续读取直到遇到非数字(或小数点)为止。
如果开头没有有效数字,转换结果为 0
代码中,$str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3"
因此:
$key == $str → $key == (int)$str → $key == 123所以可以获得传参
?key=123