[ACTF2020 新生赛]BackupFile1

2023-12-13 05:19:50

[ACTF2020 新生赛]BackupFile1 wp

进入页面,提示:Try to find out source file!

这是要在网站下翻出源代码。

使用 dirsearch 进行目录爆破

结果会被保存到一个文件里面,适当过滤一下:

在这里插入图片描述

可以看到网站目录下有三个文件可以访问:

flag.php,index.php.bak,manager/jmxproxy/?get=BEANNAME&att=MYATTRIBUTE&key=MYKEY

只有 index.php.bak 是有价值的,另外两个没有什么信息。

获取源代码

直接访问

http://7759f810-5e92-4d36-a925-5000d325bdfd.node4.buuoj.cn:81/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";
     {
        echo $flag;
    }
}
else {
    echo "Try to find out source file!";
}
源码审计

用 get 方式输入一个 key ,这个 key 在经过 is_numeric 函数判断,intval 函数转换后,与 str 进行弱比较,比较成功则返回 Ture 。

is_numeric 函数

is_numeric() 函数用于检测变量是否为数字或数字字符串。如果指定的变量是数字或数字字符串则返回 TRUE,否则返回 FALSE,注意浮点型返回 1,即 TRUE。

intval 函数

intval() 函数用于获取变量的整数值。

PHP 中的弱比较 “==”

php在进行字符串与数字比较时,会强制把字符串转换为数字,而转换时会截取到第一个不是数字的字符前。

那么在进行 if($key == $str) 时,key 是个整数,而 str 是个字符串,在比较时对 str 进行强制转化,截取到第一个不是数字的字符前,即 123 ,故此只需要让传入的 key=123 即可。

在这里插入图片描述

拿到 flag 。

文章来源:https://blog.csdn.net/m0_73612768/article/details/134835276
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。