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