当前位置: 首页 > article >正文

文件操作 说明

文件包含

1、文件包含的作用:将文件以脚本的格式执行(根据当前网站脚本类型)

2、各种语言造成文件包含漏洞的简要写法

第八个 C 语言那个,是包含远程文件,其余的是包含本地文件
在这里插入图片描述
有文件包含的各个脚本的代码

文件包含在 php 中,涉及到的危险函数有四个,分别是

include()、include_once()、require()、require_once()。

区别如下:

include:包含并运行指定的文件,包含文件发生错误时,程序警告,但会继续执行。

include_once:和 include 类似,不同处在于 include_once 会检查这个文件是否已经被导入,如果已导入,下文便不会再导入,直面 once 理解就是只导入一次。

require:包含并运行指定的文件,包含文件发生错误时,程序直接终止执行。

require_once:和 require 类似,不同处在于 require_once 只导入一次

3、文件包含漏洞成因:

1.可控变量

  1. 文件包含函数

4、include.php 中有包含函数,1.txt 内容位 phpinfo,filename=1.txt 传参,执行代码得到图 3,直接访问 1.txt 得到图 2
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5、检测是否存在文件包含漏洞

1.代理审计

2.漏扫工具

3.公开漏洞

4.手工看参数值及功能点

6、类型

远程包含:在代码中设置,allow-url-include 为 on,则可以远程包含,在 phpinfo 可以
在这里插入图片描述
7、如果想要包含的文件不在当前目录,可以使用…/返回上级
在这里插入图片描述
8、有限制绕过方法(借鉴文件上传漏洞绕过方法)
在这里插入图片描述
%00 截断

长度截断
在这里插入图片描述
9、伪协议
在这里插入图片描述
如果 PHP 的配置选项 allow_url_include、allow_url_fopen 状态为 ON 的话,则include/require 函数是可以加载远程文件的,这种漏洞被称为远程文件包含漏洞

(RFI)

file://+路径:将文件以脚本执行

data://

php://filter 可以在执行代码前将代码换个方式读取出来,只是读取,不需要开启,

读取源代码并进行 base64 编码输出,不然会直接当做 php 代码执行就看不到源代码内容了

php://input

?test=php://input 【post data】<?php phpinfo();?>

用法:php://filter/read=convert.base64-encode/resource=要读取的文件

http://123.206.87.240:8005/post/index.php?file=php://filter/read=convert.

base64-encode/resource=index.php(bugku 文件包含例题)

打开网址
在这里插入图片描述
查看网页源代码
在这里插入图片描述
发现有 index.php?file=show.php,
http://123.206.87.240:8005/post/show.php 发现返回内容一样,说明可能有文件包含,查看 show.php 没有内容,不管他,所以用php://filter 查看 index.php 文件,在注释中有 flag

文件源代码
在这里插入图片描述

演示案例

确定漏洞为文件包含漏洞(检测)

发现有 include,直接访问 phpinfo.php发现页面一样,说明有文件包含
在这里插入图片描述
在这里插入图片描述
先确定操作系统(Linux),查看当前目录

读取第一个文件,php://filter

解码 base64 得到 flag
在这里插入图片描述

文件下载

文件下载得作用:下载文件,凡是存在文件下载的地方都可能存在文件下载漏洞
在这里插入图片描述
2、下载数据库配置文件(敏感文件)

⚫ 扫描工具爬行或扫描地址

⚫ 下载好的文件代码中去分析路径(可见文件)和包含文件获取

3、直接访问和下载该文件是不一样的
在这里插入图片描述
第二题:随便下载个东西
同理:下载其他文件时,也要加密
在这里插入图片描述
文件下载漏洞在哪里测?

⚫ 有下载功能的地方

文件下载漏洞怎么判断存在?

⚫ 下载 /index.php

⚫ 文件被解析,则是文件包含漏洞

⚫ 显示源代码,则是文件读取漏洞

⚫ 提示文件下载,则是文件下载漏洞,凡是有下载功能的地方都可能有下载漏洞

下载文件:数据库、平台……配置文件,都可以尝试下载

Windows

C:\boot.ini //查看系统版本

C:\Windows\System32\inetsrv\MetaBase.xml //IIS 配置文件

C:\Windows\repair\sam //存储系统初次安装的密码

C:\Program Files\mysql\my.ini //Mysql 配置

C:\Program Files\mysql\data\mysql\user.MYD //Mysql root


C:\Windows\php.ini

C:\Windows\my.ini

C:\Windows\win.ini

//php 配置信息

//Mysql 配置信息

//Windows 系统的一个基本系统配置文件
Linux

/root/.ssh/authorized_keys

/root/.ssh/id_rsa

/root/.ssh/id_ras.keystore

/root/.ssh/known_hosts //记录每个访问计算机用户的公钥

/etc/passwd

/etc/shadow

/usr/local/app/php5/lib/php.ini	//PHP 配置文件

/etc/my.cnf //mysql 配置文件

/etc/httpd/conf/httpd.conf //apache 配置文件

/root/.bash_history //用户历史命令记录文件

/root/.mysql_history //mysql历史命令记录文件

/proc/mounts	//记录系统挂载设备

/porc/config.gz //内核配置文件

/var/lib/mlocate/mlocate.db	//全文件路径

/porc/self/cmdline //当前进程的 cmdline 参数

http://www.kler.cn/a/611131.html

相关文章:

  • 生成模型速通(Diffusion,VAE,GAN)
  • 基于Spring Boot的供应商管理系统的设计与实现(LW+源码+讲解)
  • LangChain开发(七)自定义输出格式(JSON/XML/YAML)
  • AF3 Rotation类的map_tensor_fn 方法解读
  • 蓝桥杯 残缺的数字
  • Linux <(...) 进程替换
  • Photoshop 2025安装包下载及Photoshop 2025详细图文安装教程
  • 2025Java面试TOP1000问:源码级解答+避坑指南+性能优化
  • 在线文档导出为word/pdf/png
  • springBoot中雪花算术法
  • (番外篇一)学习webgl是先从现有的框架还是直接从底层开始学?
  • 特斯拉Optimus 2.0:多模态感知与强化学习引领家庭场景变革
  • 解决Vmware 运行虚拟机Ubuntu22.04卡顿、终端打字延迟问题
  • Python个人学习笔记(19):模块(正则表达式)
  • 车载以太网网络测试 -24【SOME/IP概述】
  • 深度学习框架PyTorch——从入门到精通(10)PyTorch张量简介
  • react 15-16-17-18各版本的核心区别、底层原理及演进逻辑的深度解析
  • 【学Rust写CAD】11 2D CAD可用rust库
  • 详细介绍sentinel的使用,并列举经常出的面试题以及答案
  • xml文件