文件上传漏洞php相关函数

2023-11-09

1.file_exists(path)

检查文件或目录是否存在。

参数 描述
path 必需。规定要检查的路径。

如果指定的文件或目录存在则返回 TRUE,否则返回 FALSE

2.move_uploaded_file(file,newloc)

把上传的文件移动到新位置。

如果成功该函数返回 TRUE,如果失败则返回 FALSE。

参数 描述
file 必需。规定要移动的文件。
newloc 必需。规定文件的新位置。

3.在服务端对数据包的MIME进行检查

$_FILES['upload_file']['type'] == 'image/jpeg‘

4.trim(string,charlist)

移除字符串两侧的空白字符或其他预定义字符。

参数 描述
string 必需。规定要检查的字符串。
charlist 可选。规定从字符串中删除哪些字符。如果省略该参数,则移除下列所有字符: "\0" - NULL "\t" - 制表符 "\n" - 换行 "\x0B" - 垂直制表符 "\r" - 回车 " " - 空格

5.deldot(s)

为upload-lab中一个常见的函数,它实际为一个自定义函数,定义于common.php中

参数 描述
s 必需。规定要操作的字符串。

函数定义如下:

function deldot($s){
    for($i = strlen($s)-1;$i>0;$i--){
        $c = substr($s,$i,1);
        if($i == strlen($s)-1 and $c != '.'){
            return $s;
        }
​
        if($c != '.'){
            return substr($s,0,$i+1);
        }
    }
}

即从字符串的尾部开始,从后向前删除点.,直到该字符串的末尾字符不是.为止。

6.strrchr(string,char)

查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。

参数 描述
string 必需。规定被搜索的字符串。
char 必需。规定要查找的字符。如果该参数是数字,则搜索匹配数字 ASCII 值的字符。

7.strtolower(string)

把字符串转换为小写。

参数 描述
string 必需。规定要转换的字符串。

8.str_ireplace(find,replace,string,count)

替换字符串中的一些字符(不区分大小写)。

参数 描述
find 必需。规定要查找的值。
replace 必需。规定替换 find 中的值的值。
string 必需。规定被搜索的字符串。
count 可选。一个变量,对替换数进行计数。

9.in_array(value,array,type)

搜索数组中是否存在指定的值。

参数 描述
value 必需。规定要在数组搜索的值。
array 必需。规定要搜索的数组。
type 可选。如果该参数设置为 TRUE,则检查搜索的数据与数组的值的类型是否相同。

  1. rand(min,max) 生成随机整数。

参数 描述
min 可选。规定返回的最小数。默认是 0。
max 可选。规定返回的最大数。默认是 getrandmax()

11.strrpos(string,find,start) 查找字符串在另一字符串中最后一次出现的位置(区分大小写)。

参数 描述
string 必需。规定被搜索的字符串。
find 必需。规定要查找的字符。
start 可选。规定开始搜索的位置。

返回字符串在另一字符串中最后一次出现的位置,如果没有找到字符串则返回 FALSE。字符串位置从 0 开始,不是从 1 开始。

12.fopen(filename,mode,include_path,context)打开一个文件或 URL。

如果 fopen() 失败,它将返回 FALSE 并附带错误信息。您可以通过在函数名前面添加一个 '@' 来隐藏错误输出。

filename 必需。规定要打开的文件或 URL。
mode 必需。规定您请求到该文件/流的访问类型。可能的值: "r" (只读方式打开,将文件指针指向文件头) "r+" (读写方式打开,将文件指针指向文件头) "w" (写入方式打开,清除文件内容,如果文件不存在则尝试创建之) "w+" (读写方式打开,清除文件内容,如果文件不存在则尝试创建之) "a" (写入方式打开,将文件指针指向文件末尾进行写入,如果文件不存在则尝试创建之) "a+" (读写方式打开,通过将文件指针指向文件末尾进行写入来保存文件内容) "x" (创建一个新的文件并以写入方式打开,如果文件已存在则返回 FALSE 和一个错误) "x+" (创建一个新的文件并以读写方式打开,如果文件已存在则返回 FALSE 和一个错误)
include_path 可选。如果您还想在 include_path(在 php.ini 中)中搜索文件的话,请设置该参数为 '1'。
context 可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。

13.string fread ( resource $handle , int $length )读取打开的文件。

函数会在到达指定长度或读到文件末尾(EOF)时(以先到者为准),停止运行。

该函数返回读取的字符串,如果失败则返回 FALSE。

参数 描述
handle 文件系统指针,是典型地由 fopen() 创建的 resource(资源)。
length 必需。规定要读取的最大字节数。

14.fclose(file)函数关闭打开的文件。

该函数如果成功则返回 TRUE,如果失败则返回 FALSE。

参数 描述
file 必需。规定要关闭的文件。

15.unpack(format,data)函数从二进制字符串对数据进行解包。

参数 描述
format 必需。规定在解包数据时所使用的格式。 可能的值: a - NUL 填充的字符串 A - SPACE 填充的字符串 h - 十六进制字符串,低位在前 H - 十六进制字符串,高位在前 c - signed char C - unsigned char s - signed short(总是16位, machine 字节顺序) S - unsigned short(总是16位, machine 字节顺序) n - unsigned short(总是16位, big endian 字节顺序) v - unsigned short(总是16位, little endian 字节顺序) i - signed integer(取决于 machine 的大小和字节顺序) I - unsigned integer(取决于 machine 的大小和字节顺序) l - signed long(总是32位, machine 字节顺序) L - unsigned long(总是32位, machine 字节顺序) N - unsigned long(总是32位, big endian 字节顺序) V - unsigned long(总是32位, little endian 字节顺序) f - float(取决于 machine 的大小和表示) d - double(取决于 machine 的大小和表示) x - NUL 字节 X - 备份一个字节 Z - NUL 填充的字符串 @ - NUL 填充绝对位置
data 必需。规定被解包的二进制数据。

如果成功则返回数组,如果失败则返回 FALSE。

16.int intval ( mixed $var [, int $base = 10 ] )

intval() 函数用于获取变量的整数值。

intval() 函数通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。 intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。

参数说明:

  • $var:要转换成 integer 的数量值。

  • $base:转化所使用的进制。

如果 base 是 0,通过检测 var 的格式来决定使用的进制:

  • 如果字符串包括了 "0x" (或 "0X") 的前缀,使用 16 进制 (hex);否则,

  • 如果字符串以 "0" 开始,使用 8 进制(octal);否则,

  • 将使用 10 进制 (decimal)

17.getimagesize() 函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息。

getimagesize() 函数将测定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型及图片高度与宽度。

18.image_type_to_extension — 根据指定的图像类型返回对应的后缀名。

 image_type_to_extension(IMAGETYPE_PNG)

根据给定的常量 IMAGETYPE_XXX 返回后缀名。

18.stripos(string,find,start)函数查找字符串在另一字符串中第一次出现的位置(不区分大小写)。

参数 描述
string 必需。规定被搜索的字符串。
find 必需。规定要查找的字符。
start 可选。规定开始搜索的位置。

返回字符串在另一字符串中第一次出现的位置,如果没有找到字符串则返回 FALSE。注释:字符串位置从 0 开始,不是从 1 开始。

19.int exif_imagetype( string $filename )

该函数接受单个参数$filename,该参数保存图像的名称或URL

返回值:此函数返回与IMAGETYPE常量之一相对应的整数,如下所示:

  • IMAGETYPE_GIF(1)

  • IMAGETYPE_JPEG(2)

  • IMAGETYPE_PNG(3)

  • IMAGETYPE_SWF(4)

  • IMAGETYPE_PSD(5)

  • IMAGETYPE_BMP(6)

  • IMAGETYPE_TIFF_II(7)

  • IMAGETYPE_TIFF_MM(8)

  • IMAGETYPE_JPC(9)

  • IMAGETYPE_JP2(10)

  • IMAGETYPE_JPX(11)

  • IMAGETYPE_JB2(12)

  • IMAGETYPE_SWC(13)

  • IMAGETYPE_IFF(14)

  • IMAGETYPE_WBMP(15)

  • IMAGETYPE_XBM(16)

  • IMAGETYPE_ICO(17)

  • IMAGETYPE_WEBP(18)

20.basename(path,suffix)函数返回路径中的文件名部分。

参数 描述
path 必需。规定要检查的路径。
suffix 可选。规定文件扩展名。如果文件有名有文件扩展名,将不会显示这个扩展名。

21.resource imagecreatefromjpeg( string $filename )

参数:该函数接受单个参数$filename,该参数保存图像的名称。返回值:成功时此函数返回图像资源标识符,错误时返回FALSE

22.unlink(filename,context)函数删除文件。

如果成功,该函数返回 TRUE。如果失败,则返回 FALSE。

参数 描述
filename 必需。规定要删除的文件。
context 可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。

23.string strval ( mixed $var )函数用于获取变量的字符串值

参数说明:

  • $var: 可以是任何标量类型,但不能是数组或对象。

24.bool imagejpeg( resource $image, int $to, int $quality )

参数:此函数接受上述和以下所述的三个参数:

  • $image:它指定要处理的图像资源。

  • $to (Optional):它指定将文件保存到的路径。

  • $quality (Optional):它指定图像的质量。

返回值:如果成功,此函数将返回TRUE,否则将返回FALSE。

第三个参数很重要,它决定了你重新生成的图片质量及大小。imagejpeg和imagegif,这个参数的范围是1-100,默认是100,数值越大,图片质量越高;imagepng是1-9

25.isUploadedFile()

如果文件尚未上载到web服务器上的/tmp,它将返回错误代码

26.pathinfo(path,options)返回的数组元素如下:

  • [dirname]  目录路径 

  • [basename]  文件名 

  • [extension]  文件后缀名 

  • [filename]  不包含后缀的文件名 

参数 描述
path 必需。规定要检查的路径。
options 可选。规定要返回的数组元素。默认是 all。可能的值: PATHINFO_DIRNAME - 只返回 dirname PATHINFO_BASENAME - 只返回 basename PATHINFO_EXTENSION - 只返回 extension PATHINFO_FILENAME - 只返回 filename

如果不是请求所有的元素,则 pathinfo() 函数返回字符串。

27.explode(separator,string,limit)函数使用一个字符串分割另一个字符串,并返回由字符串组成的数组。

参数 描述
separator 必需。规定在哪里分割字符串。
string 必需。要分割的字符串。
limit 可选。规定所返回的数组元素的数目。可能的值: 大于 0 - 返回包含最多 limit 个元素的数组 小于 0 - 返回包含除了最后的 -limit 个元素以外的所有元素的数组 0 - 会被当做 1, 返回包含一个元素的数组

28.reset() 函数将内部指针指向数组中的第一个元素,并输出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

文件上传漏洞php相关函数 的相关文章

  • Elasticsearch 如何使用通配符进行 OR 查询

    我很难尝试使用 elasticsearch 构建查询 我想查询类似的内容 WHERE field 1 is match string OR field 2 is wildcard match string OR field 3 is fuz
  • 为什么在发出带有发布数据的请求后,PHP 中的 $_POST 数组为空

    我使用发布数据向页面 getremote php 发出发布请求 但 POST 数组似乎为空 如果有人能告诉我我做错了什么 我将不胜感激 发出请求的 JavaScript 代码是 var postdata Content Type appli
  • mysqli_real_escape_string 无法正常工作

    我已经搜索过 但我发现似乎没有任何效果 我的问题是 当使用特殊字符作为 输入查询会中断 现在 我尝试在字符串上使用 mysqli real escape string 但这会返回一个空白值 我读到 mysqli real escape st
  • 显示文件夹并建立这些文件夹的链接

    我正在寻找用 PHP 构建一个目录浏览器 我刚刚开始编写代码 但需要有人帮助我完成或修改它 dir dirname FILE path of the directory to read iterator new RecursiveDirec
  • Yii 添加条件

    我尝试根据我的条件从表中获取行 我的代码 conditions array id gt array 148028 118508 criteria new CDbCriteria foreach conditions as key gt va
  • Composer 自动加载始终是第一位的

    我在一个遗留项目中使用作曲家 该项目有很多没有命名空间的类 重构不是一个选项 这是一个非常庞大的应用程序 但所有新模块都完全符合 psr 4 遗留代码有它自己的自动加载方法 使用类映射 非常有效 我的问题是 无论我以什么顺序添加自动加载器方
  • PHP 类中的命名空间和全局变量问题

    我陷入了这种困惑 我不明白为什么我的 HelperClass 下的全局 error 返回空 我可以验证 class gt error 确实之前已填充了数据 在这种情况下 命名空间是否存在某种我不知道的问题 请给我一些指点 以下是一些相关的代
  • 正则表达式匹配 2 个或更多单词

    我有一个正则表达式尝试匹配 2 个或更多单词 但它没有按预期工作 我究竟做错了什么 string i dont know do you know preg match a z b 2 string match echo pre print
  • php 测试字符串是否包含三个字符串之一?

    实现以下目标的最佳方法是什么 我有一个 img变量包含例如myimage left jgp someimage center jpg or img right jpg 最好的测试方法是什么 left right or center文件名并提
  • Laravel“未定义方法 Illuminate\Database\Query\Builder::attach()”

    我正在尝试在 Laravel 4 中的数据库播种期间关联相关模型 根据文档here http laravel com docs eloquent inserting related models 我可以这样做 user gt roles g
  • Woocommerce 产品查询库存状态

    我使用 3 种可用性状态 有货 缺货 和 允许缺货 我想要将仅处于 库存 状态的产品导出为 XML 问题是 woocommerce 返回两种状态的值 instock 有库存 和 允许缺货 现在查询如下 query array post ty
  • str_getcsv 未正确解析数据

    我对 PHP 的 str getcsv 函数有疑问 我有这个代码
  • PHP:数据库连接类构造方法

    我是面向对象编程的新手 最初 我是在类内部和构造函数外部定义变量并为其赋值 但是在今天的 Java OOP 课程之后 我被告知这是不好的风格 应该避免 这是我模拟的原始 PHP 数据库连接类 class DatabaseConnection
  • 关联数组与 SplObjectStorage

    我正在编写代码来管理一组独特的对象 该代码的第一个原型使用关联数组 基本上就像我一直这样做的方式一样 然而 我也热衷于利用 PHP 的更现代版本中添加的功能 例如 SplObjectStorage 1 这样做 部分是作为一种学习经验 部分是
  • 两个 mysql_fetch_array 语句

    是否有任何原因导致我无法在一个 while 循环中包含两个处理两个不同 mysql 查询结果的 mysql fetch array 语句 原因是我有两个来自 mysql 数据库的查询结果 每个结果包含两列 如下所示 Query 1 Date
  • 如何在服务器(无 GUI)上呈现网页以进行打印?

    我正在尝试使用 PHP 脚本将页面实用地打印到办公室打印机 这是我到目前为止所得到的 我在服务器上安装了一台打印机 我可以通过命令行的打印命令使用 PHP 向其发送作业 我还可以使用 PHP 脚本编写纯文本文件 然后将它们添加到打印提示中
  • Codeigniter:用户会话不断过期

    我正在使用 CodeIgniter 但在会话方面遇到了一个小问题 我已将 config php 中的 sess expiration 设置为 0 以便用户会话永远不会过期 但用户 甚至我自己 仍然偶尔会被踢出并要求再次登录 顺便说一句 我将
  • 从php字符串中删除奇怪的字符

    这就是我现在所拥有的 将 RSS feed 绘制到 php 中 RSS feed 中的原始 xml 如下所示 Paul 8217 s Confidence 到目前为止我拥有的 php 是这样的 newtitle item gt title
  • 一个模型中的多个表 - Laravel

    我的索引页使用数据库中的 3 个表 索引滑块 索引特征 页脚框 我使用一个控制器 IndexController php 并像这样调用三个模型 public function index return View make index gt
  • 寻求有关标记视频系统上的“相关视频”查询的建议

    好吧 我运行一个小型视频网站 在实际的视频页面上有一条与大多数视频页面 例如 YouTube 类似的 相关视频 目前我所做的就是随机获取其标签之一并查找其他视频相同的标签 毫不奇怪 这不是一个好方法 因为有些标签非常模糊 有些视频被错误标记

随机推荐

  • 18.函数subplot2grid():让子区跨越固定的网格布局

    文章目录 1 subplot2grid 的使用方法 2 模块gridspec中的类GridSpec的使用方法 subplot2grid 函数的rowspan和colspan参数可以让子区跨越固定的网格布局的多个行和列 实现不同的子区布局 比
  • 韩顺平 2021零基础学Java 学习笔记(1)(自用)

    目录 第 2 章 Java 概述 第 3 章 变量 第 4 章 运算符 第 5 章 程序控制结构 第 6 章 数组 排序和查找 第 7 章 面向对象编程 基础部分 第 8 章 面向对象编程 中级部分 第 2 章 Java 概述 2 1 Ja
  • Vue3 如何实现一个全局搜索框

    前言 自从学习 vue 以来 就对 vue 官网全局的 command K 调出全局关键词搜索这个功能心心念念 恰好最近项目也是需要实现一个全局搜索的功能 也正好可以正大光明的带薪学习这个功能的思路 网上的教程水平参差不齐 而恰好之前的项目
  • C++数组【修订】

    C 数组 修订 C 数组 array 是一种顺序容器sequence container 是由单一数据类型元素组成的一个有序集合 数组是用来存储一系列数据 但它往往被认为是一系列相同类型的变量 对数组元素的访问是通过下标 subscript
  • 高精度24bit 模数转化 AD7767芯片 使用总结

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家提出意见 一起讨论 PDF资料请大家网上搜索 环境 上位机 MIPS WCE6 0 1 芯片功能介绍 它是一个高精度的24bit采样SAR模数转
  • 读取pytorch.bin权重文件解读

    读取pytorch bin的权重文件实现的函数在modeling utils py之中 print load Pytorch model if state dict is None try state dict torch load res
  • 【Python】‘builtin_function_or_method‘ object is not subscriptable 错误

    Python数组初始化报错 括号问题 错误方式 inArr array ffMiles percentTags iceCream 正确方式 inArr array ffMiles percentTags iceCream
  • openjudge数据结构练习集 字符栈的实现

    字符栈的实现 查看 提交 统计 提问 总时间限制 1000ms 内存限制 1024kB 描述 本程序定义了一个有头结点的链栈 栈的数据元素类型是字符型 并实现了它的创建 入栈 出栈 获取栈顶元素 判断栈是否为空 销毁栈等操作 为了测试这些操
  • 千万不要这样使用Arrays.asList !

    作者 flyhero 微信公众号 码上实战 ID Push Code 使用Arrays asList 的原因无非是想将数组或一些元素转为集合 而你得到的集合并不一定是你想要的那个集合 而一开始asList的设计时用于打印数组而设计的 但jd
  • IDEA 查找某个 jar 包是如何被引入的

    IDEA 查找某个 jar 包是如何被引入的 方法一 我们借助 IDEA 的 maven 工具 在 maven 栏右键项目模块 选择 show Dependencies或 Ctrl Shift Alt U 这时候会展示当前模块的 jar 包
  • RT-Thread 实时操作系统(一)

    视频播放地址 https www bilibili com video BV1Cb4y1m7W5 p 2 vd source b91967c499b23106586d7aa35af46413 0 学习路线 1 RT Thread简介 2 R
  • u3d 2D Animator AnimationClip复用方案

    新做了个2D游戏 类似小时候红白机的 热血格斗 比较菜 人物2d动画就用的Animator 碰撞块的方法做的 移动 攻击等做成Clip然后通过Animator控制 发现一个人物一个Animator N个片断 然后要制作10多个不同的人物 但
  • discuz密码找回:忘记管理员密码,忘记UCENTER创始人密码

    discuz站点 忘记管理员密码或忘记ucenter管理员密码怎么办 discuz管理员密码修改 第一步进入uc后台 域名 uc server 如果uc密码忘记请继续往下看 找到用户管理里编辑管理员账号 第二步把想改的密码输入进去直接提交就
  • .pgr照片文件解析,C++与Java存储数据差别大小端模式

    1 pgr是什么 pgr文件是二进制的图像文件 可以用普通的文本文件打开 或者查看十六进制的文本信息 读取需要了解 非常重要 基本数据类型的大小端存储模式 表头Header 详细信息可参考 http www powergrep com ma
  • 替换jar包内的class文件

    前提 项目几年没有更新 不确定手头上的代码是否最新内容 只能通过替换class文件进行更新 1 从本地项目中拿到class文件 2 复制jar包到文件夹中 打开cmd窗口 创建对应jar包下的文件夹 把本地项目的class文件放进去 例 m
  • 曾有一个人,爱我如生命(3)

    第十一章 一切都已结束 不再藕断丝连 我最后一次拥抱你的双膝 说出令人心碎的话语 一切都已结束 回答我已听见 我不愿再一次将自己欺骗 也许 往事终会将我遗忘 我此生与爱再也无缘 普希金 往事 那些天我不知道是怎么熬过来的 什么事都做不下去
  • golang 命令行cobra妙用

    为什么使用命令行 大型项目中少不了数据升级 如果采用web服务 一来不够安全 二来数据量大的时候也会出超时的情况 这时使用命令行是比较合适的方式了 命令行中的MVC web项目一般采用MVC模式 对于命令行有吗 对于命令行则有command
  • Unity——Transform类

    transform position 基础知识 Transform作为Unity中游戏对象最为重要的组件 位置 作为Transfrom组件的一个属性 具有同等重要的地位 Transform组件下有两个 位置 属性 position 指的是游
  • 华为OD机试-报文转换 只有20%通过率。但是没没找到未通过原因

    机试题只有AC20 但是目前没看到原因 我看有人说是16进制的原因 但是输出也是16进制 是不用转换的吧 因为我全部都是用的String 不存在说数据被我转成了10进制 报文转义功能 报文中如果出现0x0A 转义成两个字节0x12 0x34
  • 文件上传漏洞php相关函数

    1 file exists path 检查文件或目录是否存在 参数 描述 path 必需 规定要检查的路径 如果指定的文件或目录存在则返回 TRUE 否则返回 FALSE 2 move uploaded file file newloc 把