zoukankan      html  css  js  c++  java
  • BugkuCTF-Web- flag在index里 80

    CTF-【php://filter的利用】

    flag在index里 80

    题目链接:叮~传送门

    解题思路:

    首先,我们拿到题目,看到题:flag在index里。这时候便会意识到这是个很重要的提示。
    然后我们访问题目网站可以看到如下画面:第一层

    叫我点击它,逆反心理作用下,忍住点击他的欲望,看了一眼源代码,啥也没有,就是个普通的超链接。

    点击之后出现如下画面:在这里插入图片描述

    一脸懵,查看源码,无果,抓包,无果。此时陷入困境。

    大胆尝试get申请,也无果。仔细思考后发现,网址中的fire似乎便是解题的关键,奈何才疏学浅,翻看他人wp:

    了解到这是一个很典型的文件包含漏洞:fire是提示;

    这里便是运用到了PHP的封装协议:协议传送门

    之后便是在网址中的fire=之后加上php://filter/read=convert.base64-encode/resource=index.php

    抓包得到一串字符,base64解码,得到flag。题目结束。

    文章最后附上大佬的php://filter/read=convert.base64-encode/resource=index.php解析:(搬运而来)

    首先这是一个file关键字的get参数传递,php://是一种协议名称,php://filter/是一种访问本地文件的协议,/read=convert.base64-encode/表示读取的方式是base64编码后,resource=index.php表示目标文件为index.php。

    通过传递这个参数可以得到index.php的源码,下面说说为什么,看到源码中的include函数,这个表示从外部引入php文件并执行,如果执行不成功,就返回文件的源码。

    而include的内容是由用户控制的,所以通过我们传递的file参数,是include()函数引入了index.php的base64编码格式,因为是base64编码格式,所以执行不成功,返回源码,所以我们得到了源码的base64格式,解码即可。

    如果不进行base64编码传入,就会直接执行,而flag的信息在注释中,是得不到的。

    我们再看一下源码中 存在对 …/ tp data input 的过滤,其实这都是php://协议中的其他方法,都可以结合文件包含漏洞执行,具体可以百度一下

    作者原文传送门

  • 相关阅读:
    dayⅦ:元组、字典的其他操作+集合类型
    dayⅥ:作业
    dayⅥ:字符串操作+列表操作
    dayⅣ:赋值运算+if判断
    dayⅣ:赋值运算+if判断作业
    dayⅢ、基本数据类型+运算符
    爬虫解析bs4
    爬虫请求库之requests库
    爬虫原理
    各主流Linux系统解决方案pip安装mysqlclient报错
  • 原文地址:https://www.cnblogs.com/Kuller-Yan/p/12914122.html
Copyright © 2011-2022 走看看