upload

本文介绍了PHP中的imagecreatefromjpeg函数用于处理JPEG图片,涉及内存管理与随机数生成。还讨论了文件上传的安全措施,如白名单验证、URL包含选项、文件名检查以及数组操作技巧,以防止恶意文件上传和条件竞争攻击。
摘要由CSDN通过智能技术生成

part 17(二次渲染)

imagecreatfromjpeg

imagecreatefromjpeg()是PHP中处理JPEG格式图片的函数之一,它的作用是将一个JPEG格式的文件转换为一个图像资源。该函数有一个参数:$filename,它指定了要打开的JPEG图像的文件名或URL。

返回的是一个资源对象。

imagecreatefromjpeg、imagecreatefrompng、imagecreatefromgif,这些函数将图片载入内存,方便下一步用函数对图像进行处理。

jpeg格式是一种常见的图像格式,广泛应用于数字图像的存储和传输中。

载入后由于会占很大的内存,记得要释放。

srand

随机函数

strval()

strval()函数是PHP中的内置函数,用于将任何标准值(字符串、整数或双精度)转换为字符串。

参数不能是数组和对象。

返回值是字符串

imagejpeg

imagejpeg函数,用于将图像保存为jpeg格式文件。

用法    imagejpeg ( resource $image [, string $filename [, int $quality ]] )

@unlink

unlink() 函数删除文件。

若成功,则返回 true,失败则返回 false。

使用 @ 可以屏蔽错误信息输出

比如 ulink 如果要删除的文件或路径不存在会有提示信息,加上 @ 后会略过这部分信息的输出

解析:

1. imagecreatefromjpeg()函数,二次渲染是由Gif文件或 URL 创建一个新图象。成功则返回一图像标识符/图像资源,失败则返回false,导致图片马的数据丢失,上传图片马失败。上传之后无法解析

2. 二次渲染就是指后端重写文件内容。

3.上传俩张图片,找一下俩个不同的地方,将我们的PHP代码放进去

part 18(条件竞争)

这个是白名单,验证是不是那三个,如果是提出后缀,如果不是就直接删除,

我们需要做的就是在删除之前访问这个文件

1.上传1个php

1.burp 抓包,发送到intruder,进行修改,

设置成Null payloads(相当于无限发送)

第二个,修改为Contiune indefinitely

再将线程改为20

3.访问1.php,不停的刷新

part 19

在php.ini中开启allow_url_include选项

allow_url_fopen 是 PHP 中的一个配置选项,它决定了 PHP 是否能够通过 URL (而非本地文件路径) 来打开文件。这个配置选项的值会影响到一些 PHP 中与文件操作相关的函数的行为,例如 fopen() 和 file_get_contents() 。具体来说,当 allow_url_fopen 被设置为 On(开启)时,这些函数可以用来 读取 或 写入 远程文件。而当该配置项被设置为 Off(关闭)时,这些函数 只能用于操作本地文件。
在开启 allow_url_include 配置项后,PHP 将能够通过 include 等函数 将远程文件包含至当前文件并将其作为 PHP 代码进行执行

和上面一样

part 20

move_uploaded_file()会忽略/.

对文件名进行判断,黑名单

burp 抓包,进行修改,改成php/.

part 21 

explode(separator,string[,limit]) 函数,使用一个字符串分割另一个字符串,并返回由字符串组成的数组。
end(array)函数,输出数组中的当前元素和最后一个元素的值。
reset(array)函数,把数组的内部指针指向第一个元素,并返回这个元素的值
count(array)函数,计算数组中的单元数目,或对象中的属性个数

这一关白名单
验证过程:
--> 验证上传路径是否存在
--> 验证['upload_file']的content-type是否合法(可以抓包修改)
--> 判断POST参数是否为空定义$file变量(关键:构造数组绕过下一步的判断)
-->判断file不是数组则使用explode('.', strtolower($file))对file进行切割,将file变为一个数组
--> 判断数组最后一个元素是否合法
--> 数组第一位和$file[count($file) - 1]进行拼接,产生保存文件名file_name
--> 上传文件

 

将1.php修改为1.jpg

content_type改为image/jpeg

然后修改数组

把第一个元素规定为upload-20.php

第三个规定为jpg,记得和上面一样,其他几种都一样

构造数组,上面会判断最后一个数组元素,jpg直接过

$file[count($file) - 1],这个直接count算出来是3,减1,就是第二个元素,第二个元素咱们是空的

这样连接的时候就直接构造出来了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值