pass-01:先发一个后缀名为PHP的文件,发现不能上传,然后禁用js
说明:js就是所谓的客户端脚本语言,是一种在互联网浏览器(浏览器也称为Web客户端,因为它连接到Web服务器上,以下载页面)内部运行的计算机编程语言。)
普通网页内都会插入一些JavaScript代码。当浏览器加载该页面时,浏览器的内置解释器将读取并运行它在该页面中找到的JavaScript代码。
![](https://img-blog.csdnimg.cn/c07e2460bf444050a6614d22c9111671.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbmlkYXhpbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/c13ff53fad5d4f198ae55aadbe2bcd01.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbmlkYXhpbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/b79bbffeef4641baba2cf20acd7408b8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbmlkYXhpbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
可以看到,文件上传了;
pass-02:先禁用js,发现还是不能上传,用burp抓包
![](https://img-blog.csdnimg.cn/dacb0a4a15d74230a9ea761dc956101d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbmlkYXhpbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/8e3db97a65c748219da926e394d16445.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbmlkYXhpbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
抓包成功,将php的格式改成图片格式;
说明:Content-Type描述的只是发送端;发送端既可以是服务器也可以是客户端;Content-Type代表发送端发送的实体数据的数据类型。
![](https://img-blog.csdnimg.cn/9d851f2ccf614540a8f633b56d098406.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbmlkYXhpbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
格式改为image/jpeg
![](https://img-blog.csdnimg.cn/96ebd758d63e4029ba8865c5415b1306.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbmlkYXhpbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
好了,图片上传成功
![](https://img-blog.csdnimg.cn/3d0ac6c31f2c4c1aa4a75805b0007c5b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbmlkYXhpbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
pass-03:
说明:对于文件上传模块来说,尽量避免上传可执行的脚本文件。为了防止上传脚本需要设置对应的验证 方式。最简单的就是设置文件后缀名验证。
(1)基于白名单验证:只针对白名单中有的后缀名,文件才能上传成功。
(2)基于黑名单验证:只针对黑名单中没有的后缀名,文件才能上传成功。
1.先禁用js,发现不能上传说明是后端检测,先打开源代码,发现存在黑名单,以.php为后缀的文件不能上传,所以要想办法绕过黑名单,可以通过畸形后缀名来绕开,如(php.1 phtml phps asa等)![](https://img-blog.csdnimg.cn/681f454473004fbe8216dc33e91e0dd2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbmlkYXhpbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/bc10159c49994626af984705c28658fe.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbmlkYXhpbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/9fa824cb4da54d27ba5da4ad7c966136.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbmlkYXhpbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
所以现在只需要改文件后缀名即可;改为1.phps![](https://img-blog.csdnimg.cn/2734fa226e7c42d6913d8531492752ef.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbmlkYXhpbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
抓包完成,放包
好了,完成了
pass-04:
说明:加上一句AddType application/x-httpd-php .php .html .txt(意为将.txt、.php、.html后缀文件作为PHP文件解析;可以在后面加你想要的格式,可以全部被解析为PHP。
.htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。
1.发现源码中有畸形后缀黑名单;故不能用畸形后缀,换种方法![](https://img-blog.csdnimg.cn/d6a86350914847509eaad283c4df942a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbmlkYXhpbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
先上传.htaccess,再上传一个.jpg文件。
![](https://img-blog.csdnimg.cn/558a84ec70a64c7db8034a880f4193bd.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbmlkYXhpbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
pass-05:畸形后缀被部分禁用和.htaccess试,发现都不可以,查看源码,进入了黑名单,![](https://img-blog.csdnimg.cn/b118b8d062b243f88c5adc80b6932aa3.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbmlkYXhpbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/253cc9ea4dd9494c9e4b3f9f4fc4243d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbmlkYXhpbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
试试改文件后缀,(黑名单之外的后缀,随便改一个.php.xxvv),发现可以上传成功
![](https://img-blog.csdnimg.cn/02a956dd64954ebb9ff791c9b9e4a0df.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbmlkYXhpbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
pass-06:查看源码,发现和上一题相比,少了将文件名转化为小写,小写不能被识别,故将文件名全部转化为大写。
![](https://img-blog.csdnimg.cn/c426fc17794040b48ac2937fb585b248.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbmlkYXhpbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/d66a21375fdf427384396639c24a7e8f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbmlkYXhpbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/b44d9febc6504dc98ca5e515510f495d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbmlkYXhpbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/9e41a68eb2b6492c962a91dc41049496.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbmlkYXhpbg==,size_20,color_FFFFFF,t_70,g_se,x_16)
上传成功。