文章目录
第一关
发现有一个checkFile()函数,推测可能是这个函数进行判断的,我们把它删除后再上传。
上传成功

第二关
仅仅判断content-type,于是修改content-type绕过:



第三关
发现是黑名单判断,于是尝试用php3,phtml绕过
在phpstudy的配置文件httpd-conf取消注释


第四关
虽然还是黑名单,但几乎过滤了所有有问题的后缀名,除了.htaccess,于是首先上传一个.htaccess内容如下的文件:
再上传图片马

第五关
还是黑名单,加上了.htaccess,但是没有将后缀进行大小写统一,于是可以通过大小写绕过:
windows忽略大小写
直接在后面干数字

第六关
还是黑名单,但是没有对后缀名进行去空处理,可在后缀名中加空绕过:
php文件后缀大小写

第七关
后面加"."

第八关
后缀加点,这里加俩

第九关
后缀加::$DATA

第十关
黑名单过滤,注意第15行和之前不太一样,路径拼接的是处理后的文件名,于是构造info.php. . (点+空格+点),经过处理后,文件名变成info.php.,即可绕过。

第十一关
依旧是黑名单过滤,注意到,这里是将问题后缀名替换为空,于是可以利用双写绕过:


第十二关
.条件:php版本小于5.3.4 2、php.ini的magic_quotes_gpc为OFF状态
知识点:这里利用的是00截断。move_uploaded_file函数的底层实现类似于C语言,遇到0x00会截断。
看到是白名单判断,但是$img_path直接拼接,因此可以利用%00截断绕过

第十三关
这题和上一题基本一样,只是save_path不在URL中了,而在POST数据里面,由于POST里面的数据不会被url自动解码,所以要稍微改变一下,首先,先改好路径,然后再路径后面加上一个字符,什么字符都可以,这里我为了方便用+号。
因为是十六进制所以这种截断叫做是0x00截断,其实是%00截断最终被url解码还是会变成0x00的。在url中%00表示ascll码中的0,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束。这是一样的道理,所以这里还有另外一种做法。


第十四关
需要上传图片木马

正常是可以上传上的,因为本身就是jpg格式
访问查看居然是正常页面
以文本方式打开图片马,发现php代码前面为乱码

该博客围绕文件上传绕过展开,涵盖二十一个关卡。介绍了多种绕过方法,如删除判断函数、修改content - type、利用黑名单和白名单规则,采用大小写、去空、双写、00截断、二次渲染、条件竞争、文件解析漏洞等技巧,还涉及抓包改参等操作。

1万+

被折叠的 条评论
为什么被折叠?



