参考文献资料:

https://www.cnblogs.com/s0ky1xd/p/5823685.html

https://www.cnblogs.com/yuzly/p/10799486.html

一、文件包含与漏洞

文件包含:

  开发人员将相同的函数写入单独的文件中,需要使用某个函数时直接调用此文件,无需再次编写,这种文件调用的过程称文件包含。

文件包含漏洞:

  开发人员为了使代码更灵活,会将被包含的文件设置为变量,用来进行动态调用,从而导致客户端可以恶意调用一个恶意文件,造成文件包含漏洞。

二、文件包含漏洞用到的函数

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练习

如果有waf拦截,可以尝试进行各种编码,例如 url编码,unicode编码,HTML实体编码,base64编码等等!!

1.修改php.ini配置文件开启文件包含功能

allow_url_include = on

  

将DVWA的级别设置为low

1.分析源码,可以看到没有对page参数做任何过滤

  

本地文件包含

2.尝试利用文件包含

2.1绝对路径

如果说外部文件包含不成功,

在uplodfile里一直出现allow_url_include not enbale问题我试着修改DVWA里的php.ini文件但是没有效果

这时去修改phpstudy里的对应PHP版本里的php.ini则有效果!

2.2 相对路径

2.3远程文件包含

最   重   要   的   一   部   分  !!!!!!!!!!!!!!!!!!

3.使用PHP封装协议读取或写入文件

7.2日详细写!!!!

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

讲DVWA设置为medium

查看源码可以发现

对部分输入的内容进行了过滤

使用绝对路径就可以:

但是使用相对路径就不可以:

同样的文件使用相对路径就会报错,所以说这里当然可以使用绝对路径,但是也可以用别的方式进行绕过

这里使用unicode编码并不能进行绕过

尝试使用url编码

哈~仍然不能绕过,

URL编码走一波

在LOW防护水平下可以看到,是可以的

但是在Meduim水平中,URL编码也是无效。

既然编码不行,简单来说还可以双写绕过,大小写绕过,下面一一试试

这里看到大佬提示,使用..././..././..././..././..././..././..././ 绕过../的过滤

..././..././..././..././..././..././..././..././..././..././..././..././..././..././..././..././..././..././..././..././..././..././..././..././1.txt

可以看到哈,确实可以。

在Windows系统中,cd 只能进入文件夹,就比如图中的Windows/web文件夹,不能进入win.ini配置文件,但是在文件包含或者目录遍历中是可以的!!!

DVWA-文件包含-目录遍历学习笔记的更多相关文章

  1. Linux文件与目录管理(学习笔记)

    本笔记为<鸟哥linux私房菜>第六章学习笔记 一.目录与路径 相对路径与绝对路径 绝对路径:一定由根目录 / 写起              正确度比较好 相对路径:不是由 / 写起  ...

  2. VS2008引入头文件包含目录和lib库目录

    全局级别的引入 为VS所有项目设置包含目录和库目录,对所有项目都有效 如下图所示:工具-选项-项目和解决方案-VC++目录-包含文件:在此添加头文件目录即可 工具-选项-项目和解决方案-VC++目录- ...

  3. vc下项目的头文件包含目录以及库导入预计库目录设置

    1.包含目录:include 头文件包含目录设置: project->setting->C/C++->常规: Additional include directories(附加包含目 ...

  4. HttpClient使用之下载远程服务器中的文件(注意目录遍历漏洞)

    参考文献: http://bbs.csdn.net/topics/390952011 http://blog.csdn.net/ljj_9/article/details/53306468 1.下载地 ...

  5. mysqlbinlog- 处理二进制日志文件的实用工具 学习笔记

    参考 MySQL 5.5官方简体中文参考手册完美版  8.6 节 调用: shell> mysqlbinlog [option] log-files... mysqlbinlog支持下面选项: ...

  6. C4 文件和目录:APUE 笔记

    C4: 文件和目录 本章主要讨论stat函数及其返回信息,通过修改stat结构字段,了解文件属性. struct stat结构定义如下: struct stat { __dev_t st_dev; / ...

  7. Linux文件和目录的权限笔记

    查看文件或者目录的权限命令:ls -al # -a 表示全部文件包含隐藏文件,-l 表示列出每个文件的详细信息 比如执行 ls -al total 115 drwxr--x--- 4 root roo ...

  8. Python 文件和目录操作学习

    文件与文件路径 文件有两个关键属性:文件名和路径. 路径指明了文件在计算机上的位置. 文件名中,最后一个句点之后的部分称为文件的"扩展名",它指出了文件的类型 目录也叫文件夹,文件 ...

  9. 文件上传Upload 学习笔记

    整理完自己还有点晕,看来还是得找点靶场自己练习练习Orz 1:客户端JavaScript校验 Burp改包即可 2:服务端对Content-Type进行校验 猜测后,修改对应Content-Type字 ...

随机推荐

  1. 教你在CorelDRAW中制作水印

    水印是一种数字保护的手段,在图像上添加水印即能证明本人的版权,还能对版权的保护做出贡献.也就是在图片上打上半透明的标记,因其具有透明和阴影的特性,使之不管在较为阴暗或明亮的图片上都能完美使用,嵌入的水 ...

  2. Vuex form表单处理, 比官网更好的办法

    Vuex form表单处理, 比官网更好的办法 问题, 当使用vuex的state作为表单的v-model元素, 虽然简单粗暴, 但这种修改没有经过mutation方法. 在严格模式下会抛出错误 目录 ...

  3. ios中多线程GCD NSOperation NSThread 相关的操作解析

    //1.GCD 继承自C语言 优点 简单方便 //开启一个子线程处理耗时的操作 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIO ...

  4. Educational Codeforces Round 96 (Rated for Div. 2) E. String Reversal 题解(思维+逆序对)

    题目链接 题目大意 给你一个长度为n的字符串,可以交换相邻两个元素,使得这个字符串翻转,求最少多少种次数改变 题目思路 如果要求数组排序所需要的冒泡次数,那其实就是逆序对 这个也差不多,但是如果是相同 ...

  5. mysql hash join

    面阿里问到的. "mysql join的实现有几种方式?" "啥?不就一种吗?" 转载: 简单介绍:https://zhuanlan.zhihu.com/p/9 ...

  6. Spring bean注册

    DefaultListableBeanFactory中: DefaultListableBeanFactory实现了BeanDefinitionRegistry,这个接口的实现完成BeanDefini ...

  7. redis面试问题(二)

    1.redis和其他缓存相比有哪些优点呢 见上一篇 2. 你刚刚提到了持久化,能重点介绍一下么 见上一篇 3.Redis中对于IO的控制做过什么优化? pipeline? 4 有没有尝试进行多机red ...

  8. C语言项目——工程化编程的案例分析

    一.VSCode安装及环境配置 初始在Win下安装Mingw-w64/GCC 和 GDB,在VSCode下打开项目案例,发现在linktable中需要包含pthread头文件.此文件是基于Linux系 ...

  9. C语言const和define的区别

    const 定义的是变量不是常量,只是这个变量的值不允许改变是常变量!带有类型.编译运行的时候起作用存在类型检查. define 定义的是不带类型的常数,只进行简单的字符替换.在预编译的时候起作用,不 ...

  10. JZOJ2020年9月19日提高B组反思

    CSP第一轮倒计时:22天 JZOJ2020年9月19日提高B组反思 今天比的不好,只有签到题过了 130,rank 20 T1 签到题 用二分直接切 AC 100 T2 觉得是依赖背包问题 但是我没 ...