zoukankan      html  css  js  c++  java
  • php代码审计小技巧

    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的值变为数组:

      

      此时虽然出错,但恶意数据已近被写入至文件中:

      

      

  • 相关阅读:
    不知道是不是爬虫
    springCloud 搭建Eureka
    HttpsUtils
    java验证
    复选框值存数据库 存取问题
    Oracle VM VirtualBox 无法链接本地
    ssh 无法查询数据库
    CSS 分割线
    vue+Element 表格编辑
    数组,对象的深拷贝 与 浅拷贝
  • 原文地址:https://www.cnblogs.com/Spec/p/11008109.html
Copyright © 2011-2022 走看看