upload-labs

BUUCTF的Windows靶场不行 Linux好像可以

Pass-01

这是采取的前端过滤

1.

image
直接 将 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

源码一堆过滤
image
过滤了大小写 空格
但是没有过滤 '.'
所以可以将 .php 改为 .php. 来绕过
虽说不知道为什么 不能 %00截断 emmm

Pass-08

补充知识:php在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持"::$DATA"之前的文件名 他的目的就是不检查后缀名。

所以我们构造

.php::$DATA

即可成功上传
AntSword连接时将 "::$DATA"去掉 但我还是没连起 emmmmm

Pass-09

Pass-10

尝试并阅读源码可知 后端将 php替换为""
所以可以双写绕过

.pphphp

posted @ 2023-08-31 21:06  N0zoM1z0  阅读(7)  评论(0编辑  收藏  举报