初见文件上传:[极客大挑战 2019]Upload
初见文件上传:[极客大挑战 2019] Upload
进入靶机

这里说明是在提示我们要进行文件上传的方式来解答题目,并且文件的格式要为图片格式。
常规思路:
1.基本概念:
文件包含,就是指的,将我们的病毒源代码文件,通过改后缀名文件头,等绕过方式上传到网站中,并且利用网站对这个文件错误的解析方式,比如在url中解析png后缀文件为后缀为phtml的文件,执行这段代码,造成后门漏洞,从而让攻击者可以利用中国蚁剑等工具连接这个网站,调出WebShell,从而让我们可以遍历这个网站目录,窃取网站信息的一种攻击方式
2.编写代码:
我们首先可以编写一段常规的php一句话木马代码,代码如下:
1 |
|
**注意:**为什么使用post呢,post相对于get更具有隐蔽性,并且可以发送更长的参数,所以1我们使用POST的超全局变量传递参数。
3.尝试上传文件
根据网页提示,我们需要图片文件,所以我们可以将php木马文件后缀改成图片文件形式,试图绕过:

但是我们却发现网页这样显示:

说明该web对php的<? ,?>这两个符号进行了过滤,我们需要绕过。
常规绕过方法:
1 | <script language="php"> |
这个原理就是利用在js代码里写其他语言的language属性
详细的细节我已经写在《命令执行绕过符号总结》这篇文章里面了
4.再次尝试上传:

看来还是不行,仍然不是image文件难绷
5.加上文件头
web有些时候只会识别文件头,而不识别文件具体内容,所以我们可以加上图片文件头来绕过
在这里我们加入gif默认文件头:
GIF89a
就直接在刚刚代码的<script>上面一行加就可以了
发现成功了:

关于利用后门的远程控制
1.首先我们要明白浏览器是怎么解析文件的:
两种方式:
a.首先我们可以在URL中直接写入:DNS/upload/filename.xxx
的形式,此时服务器会按照xxx所写的方式来解析这个文件的数据,
例如:
我们上传的这个png后缀的源码为php的木马文件,虽然它绕过服务器被上传到网站后端还是png格式的文件,但是我们在url中写入:/upload/filename.phtml的形式,服务器就会以phtml的方式(就是php文件)解析它,并执行里面的代码,即使文件本身还是png后缀的文件。
b.或者在抓包的时候,在报文的:
Content-Disposition: form-data; name=”file”; filename=”demo.png”
这一行中,把filename中文件后缀改为demo.phtml,也是可以的,道理相同。
2.剑蚁是怎么连接文件的
中国剑蚁本质就是一个连接目标网站打开目标网站可视化WebShell的渗透测试软件
连接原理:
它的功能包括连接目标网站的Web Shell,执行命令,上传/下载文件等。在蚁剑中,连接的过程主要是通过发送HTTP请求到Web Shell,利用Web Shell的漏洞进行命令执行、获取数据等操作。
参数连接原理:
在蚁剑的界面上,URL字段指定了Web Shell的路径,这个路径是您之前上传木马文件的位置,例如DNS/upload/demo.phtml。蚁剑会通过此路径尝试与目标服务器建立连接。
我指向这个路径就是代表让web执行这个文件的代码,以phtml的方式执行。
连接密码(cmd): 在蚁剑的界面中,”连接密码”实际上是Web Shell界面中用来执行PHP命令的接口参数。在这个例子中,cmd作为连接密码是为了触发Web Shell的eval()函数,这个函数在Web Shell的PHP脚本中会执行通过POST请求传递的命令。
相当于写cmd,就是为了触发木马字段里的eval函数,函数被触发,蚁剑就和这个网站产生联系,就会调出这个网站的详细后端文件信息:

连接成功后遍历文件:

最后在文件根目录下找到flag:
