basename函数用法:PHP: basename - Manual
upload-1
源代码
可判断为前端js校验
只需要前端发jpg包后抓包修改
访问图片地址即可
upload-2
源代码
支队文件type类型做了限制 抓包修改即可
upload-3
源代码
strrchr() 函数(在php中)查找字符在指定字符串中从右面开始的第一次出现的位置,如果成功,返回该字符以及其后面的字符,如果失败,则返回 NULL。
str_ireplace()函数作用将::$DATA
替换为空
这一关利用黑名单容易被绕过的特性 常见后缀名如下:asp
asa
cdx
cer
php
aspx
ashx
jsp
php3
php.a
shtml
phtml
有些网站会对 asp 或者 php 进行过滤转成空可用这些后缀名。
aspasp asaspp
phpphp
在 iis 里 asp 禁止上传了,可以上传 asa cer cdx 这些后缀,如在网站里允许.net执行 可以上传 ashx 代替 aspx。如果网站可以执行这些脚本,通过上传后门即可获取 webshell。
在不同的中间件中有特殊的情况,如果在 apache 可以开启 application/x-httpd-php在 .php .phtml .php3后缀名为 phtml 、php3 均被解析成 php 有的 apache 版本默认就会开启。上传目标中间件可支持的环境的语言脚本即可,如.phtml、php3。
upload-4
源代码![](https://img-blog.csdnimg.cn/3eae7295bfe64f3aabd9aecbd54dedac.png)
这里封禁了所有能执行的后缀
首先要了解
htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。Unix、Linux系统或者是任何版本的Apache Web服务器都是支持.htaccess的,但是有的主机服务商可能不允许你自定义自的.htaccess文件。
上传改写过后的htaccess文件在 htaccess 里写入 SetHandler application/x-httpd-php 则可以文件重写成 php 文件。要 htaccess 的规则生效 则需要在 apache 开启 rewrite 重写模块,因为 apache是多数都开启这个模块,所以规则一般都生效
如图
.htaccess
所写内容为
<FilesMatch "jpg">
SetHandler application/x-httpd-php
</FilesMatch>
注:隐藏文件 .htaccess手动输入方可上传
成功执行
upload-5
在第四关的基础上将.htaccess加入了黑名单
利用 windows 环境的叠加特征绕过上传
在 windwos 中如果上传文件名 1.php:.jpg 的时候,会在目录下生产空白