先看题目标题,php_include,猜测为文件包含漏洞。如同盲生发现了华点,我不会啊!百度补课走起。(需要补的知识有点多,待我学会慢慢填,先粗略写一下)
先放一个关于php伪协议的知识点: [WEB安全]PHP伪协议总结 - 肖洋肖恩、 - 博客园
打开环境,看到这样一段代码:
php小白粗略地进行一下代码审计,有问题的话还麻烦大佬们指正。
重点在include($page),使用了include这个文件包含函数,被include包含的$page通过get方式传入且可控。所以存在文件包含漏洞。但在判断中通过strstr过滤了"php://"(当传入的page存在php://时候替换为空)
可以利用php伪协议。
而strstr是区分大小写的,所以可以通过大小写绕过过滤
首先通过大小写及报错,确定是linux系统
1.使用php://input 伪协议
php://input
可用于执行php代码,使用post方式传递代码即可。
构建url为111.200.241.244:59834?page=PHP://input,使用hackbar或burp抓包,用post方式传递php代码。
<?php system('ls'); ?> 列出所有文件
<?php system('cat fl4gisisish3r3.php'); ?> 查看该文件,可得到flag
2.使用data://伪协议
data://伪协议可以执行php代码,格式如下:
data://text/plain,要执行的代码
如果特殊字符被过滤,还可以使用base64编码
?page=data://text/plain;base64,编码后的代码
还可以利用data写入一句话木马,通过菜刀或者蚁剑连接
连接地址构造如下
3.通过hello参数回显
这一种方法没有太弄明白,自己的大概理解如下:
首先使page参数为本页代码,绕过判断,会执行include文件包含本页代码,这时传入的hello参数会被视为php代码执行