upload-labs靶场通关详解:第一关
一、一句话木马准备
新建一个文本文档,写入php代码,修改文件后缀名为php,保存。
phpinfo() 是 PHP 里的一个内置函数,其功能是输出关于当前 PHP 环境的详细信息。这些信息涵盖 PHP 版本、服务器配置、编译选项、PHP 扩展、环境变量、HTTP 头信息等多个方面,这里将它作为最简单的一句话木马来使用。
<?php
phpinfo();
?>
二、开始解题
1.直接上传文件。
页面显示上传失败,说明对上传文件进行了检查验证。
2.通过源代码进行详细分析。
找到靶场的文件目录,打开pass-1目录下的index文件。
通过代码可以发现,文件上传验证是写在js中,也就是最简单的前端验证。下面尝试用几种方式来绕过验证。
(1)禁用js绕过
直接在浏览器中禁用js,这样js验证代码就失效了。但是禁用js可能出现页面不能正常显示的情况,需要具体分析,具体使用。
首先按F12打开浏览器的开发者工具,在设置里面找到禁用js选项并勾选,这里以Edge浏览器为例。
然后再次上传一句话木马,发现上传成功。
一句话木马是放在upload目录下,下面测试一下木马是否能被正常解析。
出现如下页面,说明php文件被成功解析。
(2)利用bp抓包绕过验证
原理:上传的文件通过前端验证后,会将其发送给后端,在发送给后端的过程中将文件后缀改为php,这样上传到后端服务器中的文件就是php文件。
首先将一句话木马改为png、jpg等格式,使其通过前端验证,然后在数据包中将文件名改回php后缀,放行数据包,上传成功。