首页 > 其他分享 >文件包含(大纲)

文件包含(大纲)

时间:2024-03-03 20:36:41浏览次数:13  
标签:文件 http 大纲 .. 包含 flag include

文件包含(总结or大纲)

导致原因

include(),include_once(),require(),require_once(),fopen(),readfile()

使用前4个函数包含新的文件时,只要文件内容包含符合php语法规范,任意扩展名都可以被php解析,当包含非php语法规范时,将会暴露其源代码。后两个函数会造成敏感文件读取。

如何利用:

  1. include()等函数通过动态变量的方式引入需要包含的文件。
  2. 攻击者可以控制该动态变量。

总的来说,就是有可以传入include()等函数的可控变量。

本地文件包含

ex:

<?php
$file=$_GET['file'];
if(file_exists('/home/wwwrun'.$file.'cat'));
include '/home/wwwerun'.$file.'.cat';
?>
  1. 在以上代码中,假设构造http://123123/?file=../../flag,经过上面的代码后则变为,include '/home/wwwrun/../../flag.cat',flag.cat这个文件是不存在的,所以无法读取,但如果构造成?file=../../flag%00,则可以读取。

原理:php内核由c语言实现,所以使用了c语言的一些字符串处理函数。在c语言中,0字节为字符串结束符,所以在后面加入0字节可以截断flag后面的字符串,代码变成'/home/wwwrun/../../flag\0cat',由于\0时字符串已经结束,则include()函数不读取cat。

  1. 而因为url不支持\,所以通过urlencode编码,变成%00。

同时,由代码看出路径会跳到/home/wwwrun下,可以使用../../跳出目录

原理:在文件系统中,../ 是用于表示上级目录的相对路径符号。当在文件路径中使用 ../ 时,实际上是在告诉系统向上跳转到上一级目录。因此,连续使用 ../ 就可以一级一级地向上跳转,直到达到所需的目录位置。

远程文件包含漏洞

如果php配置选项allow_url_include为ON,则include与require函数都可以加载远程漏洞,这种漏洞被称为远程文件包含漏洞

ex:

<?php
$param=$_GET['param'];
require_once $param.'/cat';

同样如果构造http://123123/?param=http://123456/flag,txt,经过代码会变为

require_once http://123456/flag.txt/cat

相同这也可以使用%00来截断。

远程和本地的区别

本地文件包含漏洞是加载服务器本地的文件,远程文件包含是加载一个远程的资源,比如使用http协议加载远程文件。

标签:文件,http,大纲,..,包含,flag,include
From: https://www.cnblogs.com/follycat/p/18050634

相关文章

  • SQL注入注入方式(大纲)
    SQL注入注入方式(大纲)常规注入通常没有任何过滤,直接把参数存放到SQL语句中。宽字节注入GBK编码两个字节表示一个字符ASCII编码一个字节表示一个字符MYSQL默认字节集是GBK等宽字节字符集原理:设置MySQL时错误配置为setcharacter_set_client=gbk(它将客户端字符集设置......
  • 如何使用/proc文件系统监控Linux系统
    如何使用/proc文件系统监控Linux系统?原创 漫谈君 运维漫谈 2024-02-2909:58 江苏 听全文/proc是Linux系统中的一个虚拟文件系统,提供了对运行中内核和进程的实时访问。这个目录下包含了很多以数字命名的目录,每个目录代表一个运行中的进程或者系统信息。每个进程目录......
  • 在 macOS 上编译 LaTeX 文件
    安装MacTeX:brewinstall--caskmactex之后,在终端中进入你要编译的.tex文件所在的目录,执行如下命令:pdflatexyourfile.tex将yourfile.tex换成你要编译的文件的名字。即可编译出你需要的PDF文件。如果你想要在编写.tex文件的同时预览PDF文件:打开VisualStud......
  • 断电引起文件scn异常数据库恢复---惜分飞
    联系:手机/微信(+8617813235971)QQ(107644445)标题:断电引起文件scn异常数据库恢复作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]由于异常断电,数据库最初启动报错FriMar0108:41:172024ALTERDATABASE  MOUNTSucces......
  • npm 包 package.json 配置文件
    package.json文件每个前端项目中都有package.json文件,它是用于声明依赖的npm包配置文件。1.生成package.json文件yarninit-y{"name":"package.json文件","version":"1.0.0","main":"index.js","license":......
  • 在写ts的demo时,经常给文件添加export {},作用是什么
    在TypeScript中,当你在一个文件中添加export{}时,其作用主要有以下几点:创建模块(Module):在TypeScript中,每个.ts文件都是一个模块。通过添加空的export{},即使该文件当前没有实际导出任何内容,也明确地将文件标记为一个模块。这样可以确保其他文件可以通过导入(import)来使......
  • Go语言精进之路读书笔记第43条——使用testdata管理测试依赖的外部数据文件
    43.1testdata目录Go语言规定:Go工具链将忽略名为testdata的目录。开发者可以在名为testdata的目录下存放和管理测试代码依赖的数据文件,数据文件可作为输入也可作为输出gotest命令在执行时会将被测试程序包源码所在目录设置为其工作目录,可以这样使用f,err:=os.Open("testda......
  • Blazor下载文件
    法一:@usingSystem.IO@injectIJSRuntimeJS<PageTitle>FileDownload1</PageTitle><h1>FileDownloadExample1</h1><button@onclick="DownloadFileFromStream">DownloadFileFromStream</button>@code{pri......
  • 如何用压缩工具对指定文件进行备份保存
    使用场景:当你的程序文件需要每日自动备份时 脚本文件:新建记事本文件,重命名为bak.bat@echooff::设置7z的命令行程序路径setzip7=D:\\7-Zip\\7z.exe::设置压缩包保存路径setSave=E:\\datebak::当天日期,备份文件名setcurdate=%date:~0,4%-%date:~5,2%-%date:~8,2%::......
  • c++多线程按行读取同一个每行长度不规则文件
    对于非常大的比如上百G的大文件读取,单线程读是非常非常慢的,需要考虑用多线程读,多个线程读同一个文件时不用加锁的,每个线程打开一个独立的文件句柄多线程读同一个文件实现思路思路1先打开一个文件句柄,获取整个文件大小file_size确定要采用线程读取的部分大小read_size和......