ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[GXYCTF2019]禁止套娃

2021-09-13 15:02:37  阅读:306  来源: 互联网

标签:禁止 套娃 数组 GET preg flag exp php GXYCTF2019


 

 

查看源代码、network,什么都没有

直接输入/.git/时返回403,输入/.git/head可以下载文件,发现git泄漏

使用GitHack下载源码

<?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__);
?>

1、flag在flag.php

2、需要以GET形式传入一个名为exp的参数。如果满足条件会执行这个exp参数的内容。

3、if (!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['exp'])) 过滤了一些常用的伪协议,就不能用伪协议读flag.php。

4、if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'])) 用preg_replace()替换匹配到的字符为NULL空。传入的exp参数只能包含小写字母、,、_、(),还要以;结尾。(?R)引用当前表达式,后面加了?递归调用。只能匹配通过无参数的函数。

5、if (!preg_match('/et|na|info|dec|bin|hex|oct|pi|log/i', $_GET['exp'])) 正则匹配掉了et/na/info等关键字,过滤了一些函数。

6、eval($_GET['exp']); 典型的无参数RCE

构造?exp=print_r(scandir(pos(localeconv())))查看目录

 

构造?exp=show_source(next(array_reverse(scandir(current(localeconv())))))获取flag.php。翻转数组顺序,让指针指向第二个数组,输出文件。

 

知识点

git泄露

https://vip.iqiyi.com/cps_pc.html?fv=zz_5993b5deb9f24

无参数RCE

https://skysec.top/2019/03/29/PHP-Parametric-Function-RCE/#%E4%BB%80%E4%B9%88%E6%98%AF%E6%97%A0%E5%8F%82%E6%95%B0%E5%87%BD%E6%95%B0RCE

https://zhuanlan.zhihu.com/p/347849603

函数

localeconv() 函数返回一包含本地数字及货币格式信息的数组。

pos() 函数返回数组中的当前元素(单元),默认取第一个值。

scandir() 列出 images 目录中的文件和目录。

print_r()用于打印变量

array_reverse()以相反的元素顺序返回数组。

next() 函数将内部指针指向数组中的下一个元素,并输出。

highlight_file()函数对文件进行语法高亮显示。

 

标签:禁止,套娃,数组,GET,preg,flag,exp,php,GXYCTF2019
来源: https://www.cnblogs.com/SONGYUELV/p/15062274.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有