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

文件操作 说明

文件包含

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 参数

相关文章:

  • python deepseek AI
  • ShapeCrawler:.NET开发者的PPTX操控魔法
  • STM32中不同FLASH的芯片启动文件选择规则
  • vue 封装 Axios菜鸟教程
  • STM32C011 进入停止模式和待机模式
  • 昇腾MindIE 限制非首token时延(TPOT)的极限吞吐
  • Windows命令提示符(CMD) 的常用命令分类整理
  • Google Benchmark性能测试
  • 质检LIMS系统在粮油加工企业的应用 粮油质检LIMS系统应用的痛点
  • AP CSA FRQ Q2 Past Paper 五年真题汇总 2023-2019
  • 单多表查询练习
  • jmm-java内存模型
  • 工厂模式a
  • 习题4-9 打印菱形图案
  • 全分辨率免ROOT懒人精灵-自动化编程思维-设计思路-实战训练
  • Arduino、ESP32驱动BME688环境传感器(环境传感器篇)
  • 模拟curl的回调函数实现返回结构体
  • 基于Spring Boot的ONLY在线商城系统设计与实现的设计与实现(LW+源码+讲解)
  • Ubuntu xinference部署本地模型bge-large-zh-v1.5、bge-reranker-v2-m3
  • Headless Chrome 优化:减少内存占用与提速技巧
  • 公元1058年:柳永词为什么时好时坏?
  • 孙卫东会见巴基斯坦驻华大使:支持巴印两国实现全面持久停火
  • 国务院关税税则委员会关于调整对原产于美国的进口商品加征关税措施的公告
  • 工人日报:“鼠标手”被纳入职业病,劳动保障网越织越密
  • 明查|印度空军“又有一架战机被巴基斯坦击落,飞行员被俘”?
  • 国羽用冠军开启奥运周期,林丹:希望洛杉矶奥运取得更好成绩