当前位置: 代码迷 >> 综合 >> ctfshow 文件上传
  详细解决方案

ctfshow 文件上传

热度:74   发布时间:2023-11-24 20:41:36.0

ctfshow 文件上传

web151

在这里插入图片描述木马文件333.png
在这里插入图片描述上传抓包修改为333.php
在这里插入图片描述
访问木马文件,system查找flag文件
post:xiaoyu=system(‘tac …/f*’)得到flag
在这里插入图片描述

web152

在这里插入图片描述上传 333.php然后抓包修改content-type为 image/png或者上传.png文件后修改后缀为.php
在这里插入图片描述直接访问upload/333.php
然后 post:xiaoyu=system(‘tac …/f*’); flag在当前文件所在位置的上一层。
在这里插入图片描述

web153

在这里插入图片描述不知道过滤什么,看了WP:
考察利用上传user.ini进行文件上传绕过。

user.ini官方文档

自 PHP 5.3.0 起,PHP 支持基于每个目录的 INI 文件配置。此类文件 仅被 CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果你的 PHP 以模块化运行在 Apache 里,则用 .htaccess 文件有同样效果。
除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER[‘DOCUMENT_ROOT’] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。
在 .user.ini 风格的 INI 文件中只有具有 PHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI 设置可被识别。
思路:
上传一个.user.ini 文件设置一个文件333.png然后访问index.php就相当于包含了333.png
先写好一个.user.ini内容如下:
在这里插入图片描述
在写一个shell
在这里插入图片描述意思为PHP有一个可以重写的配置文件,类似于apache的.htaccess绕过,但是PHP这个比较苛刻,需要开启一定功能才能使用,题目是默认开启的
先上传.user.ini.png文件(因为png为合法文件,之后抓包之后再修改文件名为.user.ini.)
在这里插入图片描述
然后再上传shell文件333.png,访问/upload/index.php自动包含
在这里插入图片描述最后访问xxx/upload/index.php
用POST:xiaoyu=system();查找flag
在这里插入图片描述

web154

在这里插入图片描述
上传抓包测试
1、后缀不合法的无法上传
2、内容包含<?php的无法上传
上传思路
1、.user.ini配置文件的利用
2、php的标签其他写法,有

(<% echo '123';%>,<?=(表达式)?>,<script language=”php”>echo '123'; </script>

测试发现只有短标签符合要求
所以先上传.user.ini.png文件(因为png为合法文件,之后抓包之后再修改文件名为.user.ini.)
然后再上传shell文件3duan.png,
3duan.png内容更改为:
在这里插入图片描述访问/upload/index.php自动包含
在这里插入图片描述system查找flag
在这里插入图片描述

web155

同web154一样绕过操作

web156

在这里插入图片描述随意上传文件测试
发现不仅要求合法后缀,还要求合法内容
我将shell内容做了拆分进行爆破
在这里插入图片描述
发现php和[被过滤了
在这里插入图片描述在这里插入图片描述思路:
1…user.ini配置文件的利用
2.短标签绕过php
3.大括号代替中括号
所以:
先上传.user.ini.png文件(因为png为合法文件,之后抓包之后再修改文件名为.user.ini.)
然后再上传shell文件3duan.png,
3duan.png内容更改为:
在这里插入图片描述访问/upload/index.php自动包含

system查找flag
在这里插入图片描述

web157

与156一样过滤了php和[,{,;不仅要求合法后缀,还要求合法内容
在这里插入图片描述
最后直接输出flag吧,不上?了

思路还是156的思路,只是将3duan.png内容改为:

<?=system('tac ../f*')?>

绕过所有过滤
访问/upload/index.php即可得到flag

web158

同157思路一样
在这里插入图片描述访问/upload/index.php即可得到flag

web159

同157思虑一样,多了括号和system的过滤,括号用反引号代替绕过

<?=`tac ../f*`?>

访问/upload/index.php即可得到flag

web160

过滤了大部分关键字
可以利用日志包含绕过,图片内容<?=include"/var/lo"."g/nginx/access.lo"."g"?>
因为log被过滤了。所以用拼接绕过
思路:
.user.ini配置文件的利用
日志包含绕过
步骤
先上传.user.ini.png文件(因为png为合法文件,之后抓包之后再修改文件名为.user.ini.)
然后再上传shell文件3duan.png
图片内容<?=include"/var/lo"."g/nginx/access.lo"."g"?>
抓包修改ua头信息
在这里插入图片描述访问/upload/index.php即可得到flag
在这里插入图片描述