小迪
https://www.bilibili.com/video/BV1JZ4y1c7ro?p=20
1.文件上传常见验证:
后缀名:
大部分网站都是白名单验证
黑名单不完整的情况,后缀php还可以写成php5,phtml,这要看搭建平台的支持情况
文件类型:
MIME信息
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型
一个采用了 MIME协议的电子邮件就叫做MIME邮件,MIME邮件在RFC822文档中定义的邮件头字段的基础上,扩充了一些自己专用的邮件头字段,例如,使用 MIME-Version头字段指定MIME协议的版本,使用Content-Type头字段指定邮件体的MIME类型
上传jsp文件,修改content-type 为image.jpeg达到绕过验证
文件头:
修改内容头信息绕过验证
https://blog.csdn.net/qq_42777804/article/details/98876646
上传代码部分
php部分
UPLOAD_PATH:上传路径
.加号的意思
html表单
$_FILES数组内容
action 属性规定当提交表单时,向何处发送表单数据。
upload-labs less-2
抓包修改 concent-type 为 image/jpeg
黑名单
upload-labs less3
php 写成php5,php3,pthml
less4的黑名单就多了
.htaccess是Apache服务器中的
htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
如何在windows创建.htaccess
https://blog.csdn.net/kakuma_chen/article/details/71465251
<FilesMatch "fufu">
Sethandler application/x-httpd-php
</FilesMatch >
先上传.htaccess,上传fufu.jpg .htaccess把fufu当成php文件执行。
less6
没有大小写转换
less7
少了首尾去空,后缀加空格
less8
没有删除文件末尾的.
less9
在window的时候如果文件名+":: D A T A " 会 把 : : DATA"会把:: DATA"会把::DATA之后的数据当成文件流处理,不会检测后缀名,且保持:: D A T A 之 前 的 文 件 名 , 他 的 目 的 就 是 不 检 查 后 缀 名 例 如 : " p h p i n f o . p h p : : DATA之前的文件名,他的目 的 就是不检查后缀名例如:"phpinfo.php:: DATA之前的文件名,他的目的就是不检查后缀名例如:"phpinfo.php::DATA"Windows会自动去掉末尾的::$DATA变成"phpinfo.php"
less10 /less5
利用删除末尾的点和首位去空只执行了一次
less11
less12白名单
%00截断,系统在对文件名的读取时,如果遇到0x00,就会认为读取已结束,%00是被服务器解码为0x00发挥了截断作用
0x00是十六进制表示方法,%00和0x00是有区别的:%00是URL中的,0x00是文件命名
注意:
php版本在5.3.4以下
修改php.ini 魔术引号 magic_quotes_gpc = Off
用户上传的文件会被随机数加后缀重新命名
加%00绕过这一功能
( ̄y▽ ̄)╭ Ohohoho…这里我一直显示上传出错,但是我的php版本和魔术引号都改了
火狐插件一看,php版本7.3 泥码
打开phpstudy一看,本地127.0.0.1端口80php版本7.3,所以我以下网站不管设置什么版本,只要端口80那php版本还是7.3
之前的方法上传打开试一下,话说之前只是上传图片就以为成功了,一直没看phpinfo🤣,果然偷懒不行
重新设置端口版本改回来了
上传成功啦
less13
这里提交方式改为post
get会自动解码 %00
post不会解码 %00 -> url编码
上传成功