文件包含漏洞之——fnmatch函数绕过与——PHP内置协议

fnmatch函数绕过

DVWA安全等级高

代码解读

防御源码中最关键的一行

if(!fnmatch("file*",$file)&&$file!="include.php")

当文件既不是"include.php"(包含include.php文件)也不是"file*"(文件名file开头)时才抛出错误,反之意思,如果文件名符合其中一个条件既可以。

思路

第一个条件很难满足,所以我们的目光转移到达成第二个漏洞
page=file:///C:/xampp/htdocs/dvwa/php.ini 刚好满足"file*"(文件名file开头)

操作

构造url
http://192.168.0.103/dvwa/vulnerabilities/fi/page=file:///C:/xampp/htdocs/dvwa/php.ini
成功读取了服务器的配置文件
利用php的file协议

注意

在最新的DWVA新加了一个impossibol难度(没有漏洞)
让我们看看他是怎么写的

	写法 		
if(!="include.php"&&$ file ! "file1.php"   &&"file2.php")

白名单写法真的是屡试不爽啊

PHP内置协议

PHP带有很多内置URL风格的封装协议,可用于类似fopen()、copy()、file_exists()和filesize()的文件系统函数。

File:// 访问本地文件系统 htt[p:// 访问HTTP(s)网址 ftp:// 访问FTP(s)URLS
php:// 访问各个输入/输出流(I/o streams) zlib:// 压缩流
data:// 数据(RFC2397) ssh2:// Secure Shell 2 expect:// 处理交互式的流
glob:// 查找匹配的文件路径模式 有时候对方程序员对协议进行限制我们可以多尝试尝另外的

具体协议请参照http://www.php.net/manual/zh/wrappers.php

练习

从网上下载copyright 2007-2011 易酷CMS Some Rights Reserved 版本到本地测试。

漏洞利用过程:

http://www.anquan.us/static/bugs/wooyun-2014-061639.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值