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 的二进制修改

 

 

posted @ 2021-01-22 17:16  Pasple  阅读(158)  评论(0编辑  收藏  举报