打开环境就一句话
找出源文件!
结合题目名字:BackupFile
先用dirsearct扫描网站文件
发现一个index.php.bak ,拼接url下载
打开发现php代码
<?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!";
}
1.if(isset($_GET['key'])) { ... }
-
作用:检查 URL 中是否有
key
参数(例如?key=123
)。 -
$_GET['key']
:获取用户通过GET
方法传递的key
参数值。 -
isset()
:检查变量是否已设置且非null
。
2. if(!is_numeric($key)) { exit("Just num!"); }
-
作用:检查
$key
是否是数字或数字字符串(如"123"
、42
),如果不是,则终止脚本并输出"Just num!"
。 -
is_numeric()
:判断变量是否为数字或数字字符串(允许"123"
、"0xFF"
、"1e3"
等形式)。?key=123a
会被is_numeric()
拒绝,因为is_numeric()
不允许字符串中包含非数字字符(除了科学计数法"1e3"
或十六进制"0xFF"
等特殊情况)。
示例:
-
?key=123
→ 通过 -
?key=abc
→ 输出"Just num!"
并终止
3.$key = intval($key);
-
作用:将
$key
强制转换为整数(丢弃非数字部分)。 -
intval()
:-
"123"
→123
-
"123abc"
→123
-
"abc123"
→0
-
示例:
-
?key=123abc
→$key = 123
-
?key=abc123
→$key = 0
4. $str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
-
作用:定义一个字符串变量
$str
,用于后续比较。
5.. if($key == $str) { echo $flag; }
-
作用:如果
$key
和$str
弱类型相等(==
),则输出$flag
。
= = 为弱相等,即当整数和字符串类型相比较时。会先将字符串转化为整数然后再进行比较。比如a=123和b=123admin456进行= =比较时。则b只会截取前面的整数部分。即b转化成123。
也就是说key等于123就会==str
输入的key的值123,就能得到flag