跳到主要内容

ACTF2020_新生赛 BackupFile


已读 0%
本篇目录
阅读设置
正文字号
18

设置仅保存在当前浏览器。

[ACTF2020 新生赛]BackupFile

扫描目录,下载index.php.bak(这就是备份文件)68T7AH.pngindex.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!";
}

代码审计

key 必须先通过 is_numeric(),否则直接退出;随后被转为整数,再与固定的 $str 作弱比较,成立时显示 flag。

这里依赖 PHP 7 及更早版本的整数与字符串弱比较规则:固定字符串的数字前缀被解释为123。PHP 8 改变了数字与非数字字符串的比较规则,这个绕过不再成立。

传入参数得到flag

payload:
?key=123

str 在服务器源码中写死,并未读取请求参数,额外传入 str 不影响结果。


文章作者: 0xdadream
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 0xdadream !
赏
评论

评论将在接近此处时加载,也可点击立即加载。

  目录