文件上传的一些基础绕过
1.绕过客户端禁用js代码即可
点击查看代码<!DOCTYPE html>
<html>
<head>
<title>不安全的文件上传</title>
</head>
<body>
<h2>上传你的头像(仅限图片)</h2>
<form id="uploadForm" onsubmit="return validateFile()">
<input type="file" id="fileInput" accept=".jpg,.png">
<button type="submit">上传</button>
</form>
</body>
</html>先传后修改。2.绕过服务端1)MIME服务端代码[点击查看代码抓包,修改Content-Type。
2)文件后缀绕过
后缀大小写绕过(Php)
空格绕过(php )
点绕过(php.)
::$DATA绕过(php::$DATA)
.htaccess绕过
原理:当前目及其子目录httpd-conf 是 Apache 的系统配置文件,一个全局的配置文件,对整个 web 服务起作用;而.htaccess 也是 Apache 的配置文件,不过相当于一个局部配置文件,只对该文件所在目录下的文件起作用,改变当前目录以及子目录的apache配置信息
写入:
点击查看代码AddType application/x-httpd-php .gif.gif为后缀的文件都可被解析为php或者点击查看代码<FilesMatch "xxx.png">
SetHandler application/x-httpd-php
</FilesMatch>xxx.png可被当作php脚本解析.user.ini
.user,它会影响php.ini中的配置,从而将指定的文件内容按php来解析,影响的范围该文件所在的目录以及子目录。需要等待php.ini中的user_ini.cache_ttl设置的时间或重启Apache才能生效,且只在php5.3.0之后的版本才生效。.user.ini比.hta用的更广,不管是nginx/Apache/IIS,只要是以fastcgi运行的php都可以用这个办法。如果使用Apache,则用.htaccess文件有同样的效果。
注意:.htaccess只能用于Apache。
传入
点击查看代码auto_prepend_file = xxx.jpg再传入点击查看代码如果在上传目录中还有一个可执行的php文件,访问php文件,就达到了执行系统命令的效果。以上都为黑名单,下面来讲白名单。白名单就是文件后缀不在白名单中即为违法。>%00截断;0X00截断这两个其实被解析之后都是一个东西:chr(0);服务端判断文件类型是从后往前判断,而对文件解析是从前往后解析;对照ASCll表可知0对应的是NULL,而当一个字符串中存在空字符的时候,在被解析的时候会导致空字符后面的字符被丢弃。点击查看代码
页:
[1]