[ACTF2020 新生赛]BackupFile

首先打开环境的初始界面如下所示

题目提示说源码泄露

所以扫一下后台

发现一个index.php.bak文件,然后将此文件下载下来,去掉.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!";
}

对源码进行分析可以得出

源码的意思是传一个key参数,这个参数必须是整数,然后和str字符串比较,int和string是无法直接比较的,php会将string转换成int然后再进行比较,转换成int比较时只保留数字,第一个字符串之后的所有内容会被截掉,双等属于弱类型比较。所以只需要key=123就行了

所以payload

?key=123

posted @ 2022-02-21 11:56  Townmacro  阅读(110)  评论(0编辑  收藏  举报