前言:
继上篇《网络安全:文件上传 + 一句话木马原理 + 菜刀的简单使用》
文件包含,这个名词一出来。我们可能第一个想到的就是c语言里面的头文件的包含,include <stdio.h>,include <stdlib.h>等等。
我们知道它的作用就是将头文件包含到当前文件中,从而可以使用头文件中的变量,函数等等。网络中的文件包含和它相似略有不同。
C语言,包含关键字是include。在php中文件包含函数有四种,分别是:
1.include。如果包含文件中出错,报错后程序继续执行。
2.require。如果包含文件出错,报错后程序直接退出。
3.include_once。
4.require_once。这两个函数功能与上相同,附加功能是确保包含文件只被包含一次。
和C语言里,我们自定义头文件时写的这个东西差不多:
# ifndef __LIST_HEAD__
# define __LIST_HEAD__
........
........
#endif
我们在C里称为标准头文件结构,避免此头文件被多次包含。once和它的功能相同。
仍旧以DVWA为例(安全等级还是low):
网页中有一条红色警告:The PHP function allow_url_include is not enable.
这个函数可以在php配置文件(php.ini)中修改,只有当参数值为on时,才可以对远程文件进行包含。换句话说,如果参数值为on,可以任意包含其他服务器的文件。如果包含文件为本地文件,这个参数不重要。
回到网页中去,尝试点击file1.php和file2.php的按钮。
你会发现文件内容被包含了进来,显示在了界面之上。
后台查看file1.php内容:
<?php
$page[ 'body' ] .= "
<div class=\"body_padded\">
<h1>Vulnerability: File Inclusion</h1>
<div class=\"vulnerable_code_area\">
<h3>File 1</h3>
<hr />
Hello <em>" . dvwaCurrentUser() . "</em><br />
Your IP address is: <em>{$_SERVER[ 'REMOTE_ADDR' ]}</em><br /><br />
[<em><a href=\"?page=include.php\">back</a></em>]
</div>
<h2>More info</h2>
<ul>
<li>" . dvwaExternalLinkUrlGet( 'https://en.wikipedia.org/wiki/Remote_File_Inclusion' ) . "</li>
<li>" . dvwaExternalLinkUrlGet( 'https://www.owasp.org/index.php/Top_10_2007-A3' ) . "</li>
</ul>
</div>\n";
?>
联系上篇的文件上传,那我能不能把上篇的那个一句话包含进来呢?
这是我们上次上传的路径,为了便于观察,我们在文件中加了点能输出的内容“something”。
修改url参数:page=D:\phpstudy\PHPTutorial\WWW\DVWA-master\hackable\uploads\shell.php
看到些什么东西吗?是的,文件已经被包含了进来。
接下来就是对一句话的利用了:
在url中添加shell参数:
上篇文章我们结束在了“图片马”上。但是现在,对于图片的显示,已经有了解决办法。
把伪装好的图片上传:
整页的乱码,这是当然。图片属二进制文件,你用文本方式读取,肯定是乱码。图片太大了,最开始没有考虑这个事情,换一张小的图片:
本地有一张dvwa_email.png,打开cmd: copy dvwa_email.png/b + shell.php/a 3.png
得到一张小一点伪装图片。
对其进行包含:
前面一堆乱七八糟看不懂的就是图片数据,不过最后的那个something告诉了我们一句话已经包含了进来。利用一下:
url添加shell参数:\3.png&shell=echo("You%20are%20hacked");
利用完毕。
将马放进图片里,目前给了两种方法:
1.用你喜欢的语言,二进制打开图片,往后添加脚本。
2.使用copy命令。
再给一种,重定向。
包含:
成功显示。
当然,如果直接打开图片是错误的:
这是因为图片都有自己的“头部”,就像我们包含的3.png:
头部信息的错误是不能被正确识别。如果服务器会对图片的头部进行检测。那就像copy一样,echo脚本到一个图片中就好。
echo到3.png里:
现在再包含3.png:
添加的那部分内容也“裂开来”。
一套很酷的操作哈?