###0x00:前言:
当我们对一个网站进行渗透测试的时候可能会遇到这样的情形:
找到了一个上传图片的地方,于是我们想要通过该上传我们的一句话木马,但是我们发现上传后都会被统一的保存为xxx.jpg
这个时候我们想要单纯的上传一句话getshell就不大可能了,如果此时我们能够找到一个本地文件包含漏洞,那么一切就很好解决了。
下面我们通过一起来搭建一个简单的存在漏洞的站点,然后进行进行实例演示利用方式吧
###0x01:制作一个存在漏洞站点demo
文件结构如下:
+vul/
-upload/
-logo.jpg
*upload.html
*upload.php
*default_page.php
*index.php
其中:
upload.html是可以上传图片的页面
index.php是存在本地文件包含的页面
upload.html
```html
html
body
formaction="upload.php"method="post"enctype="multipart/form-data"
labelfor="file"Filename:/label
inputtype="file"name="file"id="file"/
br/
inputtype="submit"name="submit"value="Submit"/
/form
/body
/html
```
upload.php
```php
?php
if(($_FILES["file"]["type"]=="image/jpeg")($_FILES["file"]["size"])){
if($_FILES["file"]["error"]0){
echo"ReturnCode:".$_FILES["file"]["error"].
"br/";
}else{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/".
"logo.jpg");
echo"Storedin:".
"upload/".
"logo.jpg";
}
}else{
echo"Invalidfile";
}
?
```
index.php
```php
?php
if(isset($_GET[page])){
include$_GET[page];
}else{
include"default_page.php";
}
```
到这里一个存在漏洞的站点就制作完成了,然后我们只需要用phpstudy或者wampsever将站点部署上去就可以实战练习了
###0x02:制作图片一句话木马
需要用到的工具或材料:
1.一款十六进制编辑器(笔者用的是HxD)
2.任意一张后缀为.jpg的图片
这两样东西准备好了后我们就可以开始制作图片一句话木马了
打开HxD,将准备好的图片拖拽到HxD中:
拖进去后我们看到的界面大概可以分为两部分:
左边是文件内容的十六进制
右边是十六进制对应的ASCII码
举个例子你就懂了:
如果我们在右边输入一个字符a,a对应的ASCII码是97,然后97转换为十六进制就是61了
而制作一个图片马的方法很简单,就是直接在右边文件的末尾加上我们的一句话木马就可以了。
然后ctrl+s保存一下就OK了
###0x03:上传图片然后利用本地文件包含漏洞来执行一句话
-访问upload.html,然后选择我们刚才制作好的图片一句话木马
-点击上传
我们可以知道上传的图片文件是在upload目录下,文件名为logo.jpg
当然在真实环境中不会直接写路径,可能是一个用户头像什么的,我们可以在网页源代码中找到图片的路径。
-利用文件包含漏洞来执行一句话
我们知道在index.php中又如下这一句代码:
```php
if(isset($_GET[page])){
include$_GET[page];
```
那么我们就去index.php页面构造如下参数:
index.php?page=/upload/logo.jpg
我们知道被include包含的文件会被当作php文件来执行,这样我们在图片中隐藏的一句话木马就可以运行起来了。