upload-labs
BUUCTF的Windows靶场不行 Linux好像可以
Pass-01
这是采取的前端过滤
1.
直接 将 return CheckFile() 修改为 return true 即可上传php 文件
2.
可以先将 .php 本地修改为 .jpg 后缀
绕过前端check后 通过burpsuite抓包修改后缀名 一样可以
Pass-02
MIME验证
直接上传本地 php 文件用burpsuite抓包后
将 Content-Type 改为 image/jpeg 再repeater发送即可
Pass-03
1.
是将 .php 改为 .php2 4 5 s phtml 等
但我没成功 日后补
2.
还可以用 %00截断
.php%00.jpg
也可以
Pass-04
先上传 .htaccess文件
AddType application/x-httpd-php .jpg
这样 服务器就会将 .jpg 当作 php来执行
然后正常上传php文件即可
Pass-05
观察源码所过滤的 发现没有对 php的所有大小写组合过滤完
随便选择一种 例如 .PHP 上传即可
Pass-06
观察源码 转换成小写后再判断就没法按5的做了
但是我们可以用 %00 截断
后缀名改成
.php%00.jpg
直接按照 .jpg打开 实际运行的是 php文件 然后连接 jpg的地址即可
Pass-07
源码一堆过滤
过滤了大小写 空格
但是没有过滤 '.'
所以可以将 .php 改为 .php. 来绕过
虽说不知道为什么 不能 %00截断 emmm
Pass-08
补充知识:php在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持"::$DATA"之前的文件名 他的目的就是不检查后缀名。
所以我们构造
.php::$DATA
即可成功上传
AntSword连接时将 "::$DATA"去掉 但我还是没连起 emmmmm
Pass-09
Pass-10
尝试并阅读源码可知 后端将 php替换为""
所以可以双写绕过
.pphphp