pass-01 js校验
描述:只在前端设置js进行后缀限制,后端无验证
方法:因为js作用于浏览器,所以可以在浏览器禁用js |还可以利用bp抓包,先上传白名单文件,在bp中改为php后缀名即可。
pass-02 在服务端对数据包的MIME进行检查!
描述:检测 content-type 字段导致的漏洞
设置白名单,只允许上传类型为
image/jpeg :jpg 图片格式
image/png :png 图片格式
image/gif :gif 图片格式
方法:将Content-Type内容改为以上任一种
pass-03 文件名后缀验证(黑名单绕过)
描述:本关设置了黑名单项,禁止以下文件格式上传
方法:通过利用黑名单外的格式上传,
将文件后缀改为 .php3 .php4 .php5 .phtml .phtm
pass-04 文件名后缀校验 (配置文件解析)
描述:几乎限制了可利用的所有后缀
方法:没有限制.htaccess 文件
htaccess 文件是 Apache 服务器中的一个配置文件,它负责相关目录下的网页配置。通过 htaccess 文件,可以实现:网页
301 重定向、 自定义 404 错误页面、改变文件扩展名、允 许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能
利用解析功能,将上传的文件解析为php文件
<FilesMatch "1.jpg">//可以随意设置,将1.jpg文件解析为1.php
SetHandler application/x-httpd-php
</FilesMatch>
直接上传1.jpg并访问,会解析为php文件访问
pass-05 文件名后缀校验
描述:与上题类似但过滤了.htaccess
上传文件 .user.ini,内容为: auto_prepend_file=1.jpg
再上传一个php文件 命名为 1.jpg。
.user.ini 文件作用:所有的 php 文件都自动包含 1.jpg 文件。 .user.ini 相当于一个用 户自定义的 php.ini。
pass-06 文件名后缀校验(大小写绕过)
描述:在校验后缀时,没有将大写统一转换小。利用linux大小写敏感
方法:可以将文件改为.PhP
pass-07 文件名后缀校验(空格绕过)
描述:在校验后缀时,没有去除后缀前后空格。
方法:利用方法:burp 抓包,修改对应的文件名 添加空格。
pass-08 文件名后缀校验(点号绕过)
描述:校验后缀时,没有去掉点号
方法:利用bp抓包,加入点号.
pass-09 (::$DATA绕过)
描述:在校验后缀时,对上传的文件后缀名没有去除::$DATA
Windows 系统下,如果上传的文件名为 test.php::$DATA 会在服务器上生成一个 test.php
的文件,其中内容和所上传文件内容相同,并被解析。
方法:在后缀名后加::$DATA 上传,访问原路径即可。
pass-10(黑名单绕过)
描述:deldot函数在进行执行时,默认从后向前执行,遇到空格停止
方法:构建后缀名.php. . 使函数去除最后一个点和空格后,仍能执行并解析
pass-11 (黑名单,双写绕过)
描述:本关使用函数 $file_name=str_ireplace($deny_ext,"",$file_name);检索上传文件名是否包含黑名单文件,如果包含则替换为空。所以可以使用双写拼接字符
方法:利用拼接法,使去除后文件仍然为php
pass-12 (get00截断)
描述:使用%00截断,但需要php版本<5.3.4,并且magic_quotes_gpc关闭。找到php.ini文件
方法:将上传的文件改为.jpg ,在upload处输入上传文件名和%00
pass-13 (post00截断)
描述:POST不会对里面的数据自动解码,需要在Hex中修改。
方法:依然改这两个地方
找到修改处,改为00
即可上传成功
pass-14 (上传图片马)
1.Png图片文件包括8字节:89 50 4E 47 0D 0A 1A 0A。即为 .PNG。
2.Jpg图片文件包括2字节:FF D8。
3.Gif图片文件包括6字节:47 49 46 38 39|37 61 。即为 GIF89(7)a。
4.Bmp图片文件包括2字节:42 4D。即为 BM。
描述:这一关会读取判断上传文件的前两个字节,判断上传文件类型,并且后端会根据判断得到的文件类型重命名上传文件
方法:在图片后边加上phpinfo文件 制成图片马 访问路径加上include.php?file=upload