前提准备
一句话木马的文件,我这里是1.php
<?php @eval($_POST[cmd]); ?>
第一关--Pass-01
这里我们先进入第一关,直接上传1.php文件
此时页面回显不允许上传,但是页面并未加载,说明是在前端进行审核的,我们打开F12查看页面源代码
这里我们发现页面中存在checkFile()函数用于检查文件类型,我们手动删除后再次上传
上传成功,直接用蚁剑等工具进行连接
第二关--Pass-02
查看页面源代码我们得知文件上传的类型需要为图片类型,我们继续上传1.php用bp抓包进行更改
抓包得到这个请求包,我们将类型改为图片类型选择放行
这里我们选择放行
上传成功
第三关--Pass-03
第三关对我们的源码进行了很多限制,这时我们可以将1.php文件重命名为同源文件1.php3进行上传
上传成功
第四关--Pass-04
这一关对我们的名称后缀也进行了限制,但是由于其他后缀的文件无法解析php文件,我们就要采用htaccess文件
写一个.htaccess文件并上传
AddType application/x-httpd-php .png
//可以用php的解析器解析后缀是png的文件
这时我们只要将1.php的后缀改为png依旧可以用php进行解析
上传成功
第五关--Pass-05
这里我们发现本关不会大写转小写,因此可以将1.php进行大写更改上传1.Php
上传成功
第六关--Pass-06
第六关关闭了首尾去空的限制,我们就可以上传文件时抓包,在文件名后添加一个空格并放行
这里我们添加一个空格选择放行
上传成功
第七关--Pass-07
第七关不会删除文件名末尾的点,因此我们只需要将第六关的空格改成点即可成功上传
第八关--Pass-08
第八关去掉了字符流::$DATA,和前两关一样抓包在文件末尾添加::$DATA
第九关--Pass-09
第九关我们存在所有的限制,但是我们可以采用点空格点来绕过上传,只需要在文件名后添加点空格点即可
第十关--Pass-10
第十关会删除我们后缀中的php,因此我们可以改后缀为pphphp,这样重复写,检测到我们存在php删除后,余下字母依旧会组成php后缀(遵循从前往后的原则)
第十一关--Pass-11
本关采用的是GET型%00,因为环境问题,我们将在ctfhub中进行此关
我们将文件上传后进行抓包
http请求包内容如上,我们在上方加入%00进行隔断,并将文件后缀进行更改
放行
上传成功,可以进行连接了
第十二关--Pass-12
本关采用的是POST型的%00,和11关一样,只需要将%00写在post请求包中
第十三关--Pass-13
这里提示我们使用图片马进行访问
图片马就是将含有php一句话木马的图片文件上传到服务器中,采用文件包含漏洞进行访问
这里我们已经做好了图片马,直接进行上传并连接
这里我们成功连接
第十四关--Pass-14
同13
第十五关--Pass-15
同13
第十六关--Pass-16
二次渲染+文件包含同13
第十七关--Pass-17
第十七关会上传成功,但是成功后会检测文件是否符合规定,不符合规定的文件将被删除
因此我们可以利用php文件读写来爆破攻击
代码如下
<?php fputs(fopen('webshell.php','w'),'<?php @eval($_POST["cmd"])?>');?>
由于会删除我们上传的文件,我们可以一直爆破上传并访问上传的1.php文件来生成webshell.php文件
此时我们已经创建好了webshell.php文件
可以看到我们已经成功的过关
第十八关--Pass-18
同16和13
第十九关--Pass-19
第19关文件存在命名规范,我们选择上传1.php文件,将他命名为1.php.(这里是个点),即可上传成功