DVWA-文件包含-目录遍历学习笔记
参考文献资料:
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配置文件,但是在文件包含或者目录遍历中是可以的!!!
最新文章
- 连接第二个 insance 到 first_local_net - 每天5分钟玩转 OpenStack(83)
- Android自定义控件4--优酷菜单的菜单键及细节补充
- 使用StackExchange.Redis客户端进行Redis访问出现的Timeout异常排查
- H5中的拖拽事件
- C# List与DataTable的相互转化
- iOS 中关于ViewController总结
- ClassLoader
- activemq整合spring
- Ubuntu下Apache+php+mysql网站架设详解
- Java计算文件的SHA码和MD5码
- logstash 操作redis
- springboot启动时报错No session repository could be auto-configured.....
- 关闭默认共享,禁止ipc$空连接
- Redux Todos Example
- 更改mac系统语言及其软件
- CSS font系列
- 如何调优JVM
- MacOs执行SQL出错(mysql)
- 我遇到的问题:耗时久/效率低 --->; 应对方案: 行动-结果指向
- Java进阶路线图
热门文章
- 苹果电脑不支持ntfs磁盘怎么办?用这一招轻松搞定!
- 为什么思维导图软件MindManager成为了企业培训必备的工具
- Lumen中启用session
- Oracle数据库由dataguard备库引起的log file sync等待
- 牛客练习赛69 E 字串(哈希)
- spring bean注册和实例化
- python—数据类型和变量
- (十八)面向流水线的设计:CPU的一心多用
- moviepy AudioClip帧处理ValueError: The truth value of array with more than one element is ambiguous
- PyQt(Python+Qt)学习随笔:QTableWidgetItem项操作相关的flags、isSelected、checkState方法