Pikachu靶场-unsafe upfileupload
文件上传是网站的常用功能,通常会出现在上传头像,上传附件等地方
一、客户端检查:
1.先上传一个一句话php文件试试看,上传失败
2.查看是前端验证还是服务端验证
F12查看元素,发现一个检查文件的函数,CTRL+F 试查找一下看看能不能找到
可以看到,这个函数的定义就在前端
我们直接删掉检查函数
上传成功,并且显示了路径。
我们尝试用蚁剑连接一下,成功连接
二、服务端检查:
1.上传一个一句话木马测试下,行不通
2.查看下是前端验证还是服务器验证
并没有发现什么函数,所以应该没有放在前端
3.尝试绕过
1. %00 截断 上传成功
用蚁剑连接下试试,
结束
三、getimagesize()
这个函数功能会对目标文件的16进制去进行一个读取,去读取头几个字符串是不是符合图片的要求的
1.制作图片码上传
制作方法,准备好一张图片1.jpg和一句话木马文件2.php
cmd执行 copy 1.jpg/b+2.php 3.jpg
2.上传图片码
3.最后利用文件包含的方法可以解析图片。
方法参考file_inclusion
https://www.cnblogs.com/Pasple/p/14311918.html
注:
1.一些绕过方法:
前端禁用JS |
前端限制,禁用JS,去除input标签的accept属性 |
修改文件后缀 |
抓包工具,修改文件后缀为黑名单之外的后缀 |
修改文件后缀 |
修改文件后缀为index.jpg.php |
修改文件后缀 |
%00截断,比如index.php%00.jpg |
修改文件后缀 |
文件名末尾添加::$DATA,windows会把::$DATA之后的数据当成文件流, 不会检测后缀名.且保持::$DATA之前的文件名 |
修改文件后缀 |
在linux主机上的文件名大小写敏感,文件后缀大小混写或双写(pphphp) |
修改文件后缀 |
在文件末尾添加空格,黑名单的方式没法儿检测 |
修改文件类型 |
抓包工具,修改Content-Type:image/png |
修改文件后缀 |
修改文件名shell.php:.jpg,上传后会得到一个空的文件shell.php, 然后修改文件名为shell.>>>或者shell.<、shell.<<<、shell.>><再上传, 重写shell.php |
换行解析 |
Apache2.4.0~2.4.29换行解析漏洞%0d,%0a(CR,LF(回车,换行)) |
未知后缀名 |
Apache配置AddHandler application/x-httpd-php .php不当 导致未知后缀脚本执行 |
后缀名正则替换 |
这种需要构造,使得替换之后的可以重组成为新的可执行后缀, 双后缀名绕过 |
修改上传路径 |
name="upload_file/1.php%00"; filename="shell.jpg" |
条件竞争 |
条件竞争删除/重命名文件时间差绕过 |
图片马 |
copy code.jpg/b + shell.php/b hourse.jpg |
图片重绘包含马 |
做一个就好了 |
上传压缩包 |
配合PHP伪协议、文件协议等读取执行本地文件 |
数据库写文件 |
UDF,select查询输入 |
2.服务器判断上传文件类型方法:content - type 后缀 文件内容
3.文件格式(用来绕过黑名单)
".php",".php5",".php4",".php3",".php2","php1", ".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3", ".pHp2","pHp1",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx", ".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw", ".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx", ".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx", ".aShx",".aSmx",".cEr",".sWf",".swf"
4.%00 的二进制修改