码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • [BSidesCF 2020]Had a bad day1


    看到页面有两个按钮

    先随便点一个试一下,当我们点击之后发现url是有变动的

    感觉url是有点东西的,可能是某种注入,先尝试一下sql注入,发现给出了报错

    通过报错我们可以确定是文件包含漏洞,那我们试试php伪协议去读取一下index.php源代码试试,看看能不能通过源码分析出什么(这里有个php伪协议blog003-漏洞梳理篇之php伪协议_伪协议漏洞-CSDN博客)

    发现文件多了一个后缀哦(那有可能是直接将文件与后缀名拼接起来),那么把输入的.php删除再来一次

    这次返回了base64编码,尝试解密,得到index.php源码如下

    1. $file = $_GET['category'];
    2. if(isset($file))
    3. {
    4. if( strpos( $file, "woofers" ) !== false || strpos( $file, "meowers" ) !== false || strpos( $file, "index")){
    5. include ($file . '.php');
    6. }
    7. else{
    8. echo "Sorry, we currently only support woofers and meowers.";
    9. }
    10. }
    11. ?>

    可以看到通过category进行get传参,然后category中是需要包含woofers、meowers和index三个中任意一个的,否则就会返回Sorry, we currently only support woofers and meowers.        这里是存在一个php特性,当我们在进行伪协议写入的时候,php会忽略没有含义的值。这样绕过了过滤。从而可以达到读取flag的目的。可以去看一下这篇文章[BSidesCF 2020]Had a bad day_mb5fdcad8719a20的技术博客_51CTO博客

    也就是说当我们通过category去传入文件名的时候,category=woofers/flag的时候,index.php会在参数后面直接连接.php这个后缀,因此$file=woofers/flag.php,而在php中进行文件包含的时候会把woofers/给忽略掉,找到这个有意义的flag.php,从而到达利用php伪协议去读取flag.php的目的。

    所以可以试着传入category的参数为woofers/flag

    可以看到flag.php是被包含进去了但是没有被读取出来,看了别人的博客才知道php伪协议还可以套协议(学到了ovo),这里payload就是利用的这个知识点去构造的

    payload:         category=php://filter/convert.base64-encode/woofers/resource=flag

    这个伪协议套协议也就是去寻找woofers/flag,而前面说到php会忽略woofers所以这里就可以绕过index.php的过滤,从而读取到flag了

    可以看到页面是返回来了一串base64编码,解码就可以得到flag.php的源码,如下

    通过解码我们就可以看到源码中的flag了。

    今天又学到了哈哈哈  Ovo   ovO OVO ovo 开心的一天       自嗨哈哈哈

    参考文章:

    003-漏洞梳理篇之php伪协议_伪协议漏洞-CSDN博客

    buuctf-[BSidesCF 2020]Had a bad day(小宇特详解)-CSDN博客

    [BUUOJ记录] [BSidesCF 2020]Had a bad day - Ye'sBlog - 博客园 (cnblogs.com)

    [BSidesCF 2020]Had a bad day_mb5fdcad8719a20的技术博客_51CTO博客

  • 相关阅读:
    QT教程:QSortFilterProxyModel代理实现自定义排序、联合过滤
    能链科技深耕苏州,受邀参加中国金融科技产业峰会
    固定资产管理系统给企业带来的价值?
    【CSS动效实战(纯CSS与JS动效)】02 flex 布局实战(仿 JD 及 gitCode 布局)及 media 自适应初探
    设计一个填充工具完美解决前后端甩锅的问题了
    XXE-XML外部实体注入-知识点
    Window下安装 Mongodb,并实现单点事务
    自定义注解和@Target、@Retention注解的使用
    学习新思想,争做新青年。(一)
    LeetCode算法题解|LeetCode738. 单调递增的数字、LeetCode968. 监控二叉树
  • 原文地址:https://blog.csdn.net/m0_73673698/article/details/139727733
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号