• 如果您想对本站表示支持,请随手点击一下广告即可~
  • 本站致力于提供原创、优秀的技术文章~
  • 有任何疑问或建议 均可以在站点右侧栏处 通过各种方式联系站长哦~
  • CTF – RootMe解题报告 [Web-Server : PHP filters]

    渗透测试 EXP 67阅读 0评论

    挑战入口:Root-Me(https://www.root-me.org/en/Challenges/Web-Server/PHP-filters)
      分类目录:Link to …(http://exp-blog.com/2019/01/02/pid-2597/12/)

    PHP 的 LFI 漏洞,前置知识参考这篇文章:【Local File Inclusion (LFI) — Web Application Penetration Testing


    开启挑战后注意到:

    • 点击 home 后,URL 会添加参数 ?inc=accueil.php
    • 点击 login 后,URL 会添加参数 ?inc=login.php


    这已经满足了 LFI 漏洞的特征。

    而题目提示是 【PHP filters】,而在 LFI 漏洞利用中, php://filter 的主要作用是查看服务器的本地文件内容。

    参考 payload 为 vuln.php?page=php://filter/convert.base64-encode/resource=filepath

    意思为使用 base64 编码方式查看指定路径的文件内容。


    而目前为止,我们知道的两个文件为 accueil.phplogin.php ,因此我们先后构造两个 payload 如下:

    • ?inc=php://filter/convert.base64-encode/resource=accueil.php
    • ?inc=php://filter/convert.base64-encode/resource=login.php

    对于第一个 payload 没有得到有价值的内容,而第二个 payload 返回 base64 编码后的 login.php 页面源码:

    对其进行 Base64 解码,得到 login.php 的页面源码为:

    其中源码第一行 include("config.php"); 包含了一个配置文件 config.php ,而之后则有一个条件语句:

    if (_POST["username"]==username && _POST["password"]==password)

    很明显是比较输入的账密与变量 $username/$password 是否一致,但是没看到这两个变量定义在哪里。

    初步推测这两个变量是定义在第一行包含的配置文件 config.php 中。


    为此,构造第三个 payload 查看 config.php 的内容:

    ?inc=php://filter/convert.base64-encode/resource=config.php

    得到 config.php 的 Base64 编码内容为:

    PD9waHAKCiR1c2VybmFtZT0iYWRtaW4iOwokcGFzc3dvcmQ9IkRBUHQ5RDJta3kwQVBBRiI7Cgo/Pg==

    解码后得到密码,完成挑战:


    转载请注明:EXP 技术分享博客 » CTF – RootMe解题报告 [Web-Server : PHP filters]

    喜欢 (0) 分享 (0)
    发表我的评论
    取消评论

    表情

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址