文件上传
1、文件上传是怎样的一个过程!
- 客户端选择发送的文件->服务器接收->网站程序判断->临时文件->移动到指定的路径
2、文件上传错误代码是什么?
- 值为0:没有错误发生,文件上传成功
- 值为1:上传的文件超过了 php.ini 中 upload max filesize 选项限制的值
- 值为2:上传文件的大小超过了HTML 表达中 MAX_FILE_SIZE 选项指定的值
- 值为3: 文件只有部分被上传
- 值为4:没有文件被上传
3、网站文件常见的后缀名
-
asp
-
asa
-
cdx
-
cer
-
php
-
aspx
-
ashx
-
php3
-
php.a
-
shtml
-
phtml
-
过滤的时候可以传入这种格式
-
aspasp
-
phpphp
-
大小写转换
4、造成漏洞的原因
-
程序代码和系统缺陷
-
a) 文件可以直接上传 可执行脚本 moon.php
-
b) js 脚本限制 禁止 js 文件运行
-
修改 html
-
抓包改包
i. 直接在 jpg 上面修改代码 ii. 在包里面修改后缀名
-
文件类型的检测 修改HTTP文件类型
-
文件名可控 后缀名不可控 iis6.0 解析漏洞 moon.asp;.jpg moon.asp;jpg
-
目录解析漏洞 iis6.0 文件夹为 x.asp 只要上传文件到这个文件夹里 访问就会执行脚本
5、什么是黑名单和白名单?
- 黑名单指定后缀名是禁止上传的
- 白名单就是允许文件夹后缀
6、文件头检测
-
修改文件头 或 图片一句话绕过
-
JPEG (jpg),文件头:FFD8FF
-
PNG (png),文件头:89504E47
-
GIF (gif),文件头:47494638
-
TIFF (tif),文件头:49492A00
-
Windows Bitmap (bmp),文件头:424D
-
制作图片一句话
copy 1.gif/b+moon.php shell.php
7、%00截断的应用场景
- 直接截断文件名
- 创建目录可控 %00 截断创建目录 利用iis6.0解析漏洞,上传文件到这个目录里面
- 截断参数 生成文件
8、系统特性的了解
-
上传文件名 a.php:.jpg 的时候 会在,目录下生成 a.php 的空白文件
-
利用PHP和Windows环境的叠加特性,以下符号在正则匹配时的相等性:
双引号(")= 点号(.) 大于符号(>) = 问号(?) 小于号(<) = 星号(*)
文件名.<或文件名.<<<或文件名.>>>或文件名.>><空文件名
写入 filename.<<<
9、NTFS交换数据流
- :$DATA 创建文件
- ::$DATA创建和写入文件
10、补充
- window 系统里面会把文件名的最后一个点 会自动去掉
- 如上传 moon.php.最后还是会变成 moon.php