0x00
打开WEB界面
提示找到备份,进行跑目录,备份命名一般为www.*
,backup
,*.bak
等
经过跑目录我得到的结果是/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!";
}
进行代码审计,要想得到flag,我们需要满足如下:
- key的值等于str的值
- key为整数
我们可以看到如下,使用的是 == 而不是 ===
if($key == $str) {
echo $flag;
}
## php为弱类型语言使用==比较字符串和整型时,会将字符串转化成整型,如上的字符串在转化成整型时只保留整数部分123后面的字符串全部省略
所以这里我们只需要构造如下payload:
/index.php?key=123
得到结果
0x01 总结
主要考察了如下:
- 1.常见备份的命名以及备份文件的查找
- 2.php弱类型语言特点
php为弱类型语言使用==比较字符串和整型时,会将字符串转化成整型
如果字符串为数字开头例如 123sadasd 则转化为 123
如果字符串为字母开头例如 a23sadasd 则转化为 0