php代码审计小技巧
2024-09-07 08:48:17
1、file_put_contents()函数:众所周知此函数是将一个字符串写入至文件中。
看到此函数说明当传入数据为数组时,会被PHP强制转换为字符串,因此会绕过正则达到getshell的目的。
<?php
$test = [1,2,3,4,5];
var_dump($test);
$test1 = (string)$test;
print_r("string is :" .$test1);
var_dump($test1);
?>
以上代码可以看到被强制转换数据类型后字符串的值
可以清楚的看到被强制转换后字符串的值为:Array、故此可以绕过部分过滤正则
例如:
<?php
$test = $_GET['test'];
if(preg_match('/[<?]/',$test)){
die("error");
}
file_put_contents('shell.php',$test);
?>
首先将test的值设置为字符串:
可以看到为错误,并未写入数据,此时再将test的值变为数组:
此时虽然出错,但恶意数据已近被写入至文件中:
最新文章
- 開博客了, 因為搞Delphi 開發的關於Delphi學習
- POJ 3414
- hibernate内部测试题(附赠答案)
- SPI线协议详解
- httpwebrequest 服务器提交了协议冲突. section=responsestatusline
- galera cluster DDL节点间状态不一致的问题
- WiFi QC 自动测试:Qt控制无线路由器
- MySQL并发调优和IO调优
- Netty4.x中文教程系列(一) 目录及概述
- Java 判断操作系统类型(适用于各种操作系统)
- list 操作
- VC6 鼠标钩子 最简单样例
- JQUERY省、市、县城市联动选择
- JS中判定问题
- 架设WIN32汇编程序的开发环境
- jingtai ip
- sed进阶N;P;D
- Java 获取客户端ip返回127.0.0.1问题
- day39 mysql数据库基本操作
- C# 往线程里传参数的方法总结