进入靶场他提示我们:Try to find out source file!

我们使用目录扫描工具来扫秒网址,这里我用的是dirsearch

dirsearch -u http://64fe2ab1-4bc7-4780-8c59-552da5382c14.node5.buuoj.cn:81/ 
[ACTF2020 新生赛]BackupFile-2.png

这里我们扫描到了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!";
}

浅浅解读一下代码:

1.引用flag.php的内容,flag应该在里面

2..接收一个名为key的get请求然后判断它的类型是否为数字,不是数字就显示Just num!

3.然后把key接收到的数字变成整数

4.只有当key和str弱比较相同才可以输出flag,而php的弱比较会导致数据类型转换

比较

结果

原因

"123" == "123ffwsfwefwf..."

true

字符串转数字,只取前面数字部分

123 == "123ffwsfwefwf..."

true

"123..." 转为 123

所以我们只需要传参 ?key=123 即可拿到flag

[ACTF2020 新生赛]BackupFile-1.png