upload

文章讲述了如何在PHP中使用is_array()判断值,以及$_FILES数组的工作原理。着重介绍了文件上传时的路径绕过方法,如`.`,`::$DATA`,`..`,字符串截断和编码技巧。此外,还涉及到了getimagesize()和exif_imagetype()函数的利用,以及phpStudy配置和安全绕过的策略。
摘要由CSDN通过智能技术生成

观内心而本自具足 阅万物而虚怀若谷

释义:要从内心寻找自己的优点和特长,认识自己的价值和能力,不要被外界的评价和标准所左右,坚信自己有独特的才华和潜力。

认识世界,学习知识,接触人际关系时,要像一个空谷一样容纳,不断吸收新鲜事物,不断学习成长。

1.

PHP有一个系统函数is_array()可以判断一个值是否在数组中。

语法如下:in_array(value,array,type)

return boolen

参数说明:

value :要搜索的值

array : 被搜索的数组

type : 类型,true全等 ,false非全等(默认)

$_FILES数组内容如下: 
$_FILES['myFile']['name'] 客户端文件的原名称。 
$_FILES['myFile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。 
$_FILES['myFile']['size'] 已上传文件的大小,单位为字节。 
$_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,但 用 putenv() 函数设置是不起作用的。

move_upload_file(filename,destination)函数:将上传的文件移动到指定位置

preg_match():执行正则表达式

part 8(点绕过)

和上一个一样,直接burp抓包,然后修改,在后面加一个点

part 9(::$DATA绕过)

php 在windows 中的时候文件名加" ::$DATA"中会把::$DATA之后的数据当中数据流,不会检测后缀

都一样,burp直接抓包,然后在后面加::$DATA

part 10(点空格点绕过)

因为在禁止的里面没有这个. .然后根据Windows的命名规则可以直接去除

burp抓包,然后在后面加. .

part 11(双写php绕过)

str_replace这个区分大小写

str_ireplace这个不区分大小写

这个函数如果是一个数组,返回值也是一个数组

替换后不会再一次替换,所以只需要pphphp或者phphpp

part12(%00截断白名单)

substr函数

函数格式 (俗称:字符截取函数)
  substr(string string, int a, int b)
    1、string 需要截取的字符串 
    2、a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取)
    3、b 要截取的字符串的长度

substr(string string, int a) ;
    1、string 需要截取的字符串
    2、a 可以理解为从第a个字符开始截取后面所有的字符串。

这个函数注意

1.0和1都是从第一个字符开始

2.空格也算一个字符

3.负数从后面开始取

如果小于

 只要 |a| ≤ b,取a的个数

当 |a| ≥ b时,才取b的个数,由a决定截取位置

类如

select substr('HelloWorld',-2,3) 返回结果:ld

select substr('HelloWorld',-4,3) value from dual; //返回结果:orl

strrpos函数
strrpos(string,find,start)
参数描述
string必需。规定被搜索的字符串。
find必需。规定要查找的字符。
start可选。规定在何处开始搜索。

利用0x00是字符串的结束标识符,进行截断处理。

只不过GET传参需要url编码成%00而已

这个截断在路径上

1.这个需要先修改phpstudy

修改版本,修改为5.2.17

其他选项菜单->php拓展及设置->参数开关设置->关闭magic_quotes_gpc

2.上传1.php

3.burp抓包

修改名字和路径

将名字修改为1.ipg或者白名单里的哪些,都可

路径在upload后加1.php%00

part 13(0X00截断)

和上一关很像,只不过这个是post,上一个是get

俩种方法

1.POST不需要url编码

和上面一样,修改名字1.jpg,修改路径1.php%00

然后将%00进行编码

Convert selection->URL->url-decode

2.在upload后加1.php+

然后在hex中将2b改为00

part 14

@unpack

作用:将字典进行解包,输出测试用例中的单个字段的值

intval函数

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

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

参数说明:

  • $var:要转换成 integer 的数量值。
  • $base:转化所使用的进制。

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

  • 如果字符串包括了 "0x" (或 "0X") 的前缀,使用 16 进制 (hex);否则,
  • 如果字符串以 "0" 开始,使用 8 进制(octal);否则,
  • 将使用 10 进制 (decimal)。

返回值

成功时返回 var 的 integer 值,失败时返回 0。 空的 array 返回 0,非空的 array 返回 1。

最大的值取决于操作系统。 32 位系统最大带符号的 integer 范围是 -2147483648 到 2147483647。举例,在这样的系统上, intval('1000000000000') 会返回 2147483647。64 位系统上,最大带符号的 integer 值是 9223372036854775807。

字符串有可能返回 0,虽然取决于字符串最左侧的字符。

小数返回的是整数

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

 

头俩个字节

png(无损压缩格式):0x89 0x5

gif(支持动画的图像格式):0x47 0X49

bmp(windows位图格式):0X42 0X4D

这一关的代码

先读取文件,以只读的方式进行读取,然后关闭

然后读出来数据,转换为十进制

漏洞是因为include

使用CMD制作一句话木马。

  1. 参数/b指定以二进制格式复制、合并文件; 用于图像类/声音类文件

  2. 参数/a指定以ASCII格式复制、合并文件。用于txt等文档类文

  3. **制作图片马命令**:copy 图片文件名称/b+脚本文件名称/a  新生成的文件名称,例如:copy 222.jpg/b+111.php/a 333.jpg
     

一句话木马<?php @eval($_POST["a"]);?>
 

首先在cmd中打开俩个文件在的地方

cmd相关(一小部分)

cd Desktop 桌面

d: 或者c: 进入D盘或者C盘

cd ..能返回上一级目录

cd \ 跳转到根目录

还有更简单的方法,直接在文件在的地方输入cmd,回车就行

dir  遍历当前路径下的所有文件

md 创建一个目录

rd 删除目录

copy就是复制啦

move移动

del 删除文件

ping指令

语法:ping ip(ip地址)
功能:用来测试网络是否畅通。

要打开文件夹下的文件要一个一个来

例如,我想打开原始路径为D:\mysql-5.7.20-winx64\docs\my.txt的文件,则需要在cmd中输入:
D:回车
D:\>cd mysql-5.7.20-winx64回车
D:\mysql-5.7.20-winx64>cd docs回车
D:\mysql-5.7.20-winx64>docs>cd my.txt。即可

构造好那个图片马上传,然后通过url访问刚刚构造好的,会重新上传一个,将那个看看是啥,写过来

构造的URL为include.php?file=upload/3420210320172751.png

这里好乱,,因为我在慢慢了解,救命

part 15(getimagesize() 函数绕过)

用那个getimagesize() 函数检测

和上面的一样,构造图片马

part 16(exif_imagetype()函数绕过)

exif_imagetype()读取一个图像的第一个字节并检查其后缀名

phpStudy版本>5.3。
在php.ini中开启allow_url_fopen选项。
开启php_exif模块(在php拓展及设置 php拓展)

也和上面一样

part 17

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值