RSS
 
當前位置 : 主頁 > 電腦應用 >

通過SQL注入得到WebShell的原理及步驟

時間:2014-06-11 00:38 瀏覽:

點評:一.通過SQL注入得到WEBSHELL的原理: N.E.V.E.R的方法:利用數據庫備份得到WEBSHELL。創建一個表,在表中建一個字段用來保存木馬數據。然后利用MSSQL導出庫文件的辦法把整個數據導出來,最后再刪除新建的表。 分析: N.E.V.E.R利用了MSSQL的備份數據庫功能。把數 一.通過SQL注入得到WEBSHELL的原理:
N.E.V.E.R的方法:利用數據庫備份得到WEBSHELL。創建一個表,在表中建一個字段用來保存木馬數據。然后利用MSSQL導出庫文件的辦法把整個數據導出來,最后再刪除新建的表。
分析: N.E.V.E.R利用了MSSQL的備份數據庫功能。把數據導出來,設想數據庫中有<%%>之類的ASP標實符,導出文件,文件名以.ASP的形式保存。然后文件又保存在WEB的路徑下。那么這個導出的ASP文件是不是要去解釋<%%> 之內的語句呢?如果數據庫中有的表中有<%%>標實符,并且這之中有錯誤,那么我們導出來生成的ASP文件也會有誤。不過,這種機會也不太大。
再來看看CZY的方法吧。
CZY的方法:前面的和N.E.V.E.R的方法基本上差不多。只是后面用到了擴展存儲過程——sp_makewebtask。這個擴展存儲過程的作用就是:可以把MSSQL數據庫中的某個表中的記錄導出來,以文件的方法保存起來。這種方法就不會出現什么問題原因在于:我們只去讀表中的某個字段中的值。把字段的信息導出來生成文件。這個字段中的值都是我們剛加上的。自己在加入數據的時候,先調試一下,沒有問題在加入進去,導出來就當然沒有問題了。

www.wxvrjzvy.icu

以上兩位的方法,我都手工測試過。利用SQL注入漏洞,建表,向表中加數據,然后再導出數據,再刪除表。都是利用的SQL語句。這里我就不多說了,大家可以看本期的文章。
二.利用DELPHI去實現功能的前言
原理都分析過了。我們怎么利用DELPHI來實現他們的手工操作呢?其實方法是非常簡單的。DELPHI提供了一個NMHTTP控件。我們利用這個控件就可以向某個特定的URL提交參數。然后實現我們的自動注射功能。我馬上要為大家講解的這個程序,有一個特點。也可以說成是一個缺陷吧。程序不去自動猜解WEB的絕對路徑。程序不去判斷當前連接SQL數據庫的當前賬號的權限。我為什么要這么做?因為得到這兩者用SQL注入是非常難得到的。所以,我們程序發送命令就不會考慮太多。成不成功你執行完自己去看看生成沒有就OK了。
三.如何利用DELPHI得到WEBSHELL。
程序中用到的值。我們這里來看看有哪些:URL路徑,遠程WEB絕對路徑(通過其他方法得到,你一定有辦法的) 采用什么方法去得到WEBSHELL(也就是兩位的方法,你選哪一種)。我們同時要求點擊一個按紐開始執行命令,和點擊一個按紐來終止命今。最后就是新建的表的名稱,以及表的字段名稱,再次就是字段的類型。前面的我們在程序中放上輸入,選擇之類的控件就行了。后面的我們設一個選項按紐點按紐彈出相應設置。再把這些相應的設置用一個RECORD來保存。 www.wxvrjzvy.icu
首先,我們在DIT控件。名稱分別是:UrlET //URL路徑的輸入框、ShellPathET //遠程木馬的位置、CustomBdoorET//自定義木馬的位置。再放兩個RadioButton用來選擇采用什么方式獲取WEBSHELL。CAPTION分別取名為: BackUP DataBase 和 WEB作業。然后再放三個SpeedButtion按紐。名稱分別是:設置,開始,停止, 最后再放一個MEMO控件。來顯示當前添加的信息。到此界面上的工作就做完了。界面如圖:
現在來寫程序了。
我們首先定義一個RECORD。
如下:
Type
SetOption = Record
TableName : String; //用來保存要創建的表名.
FieldName : String; //用來保存要創建的字段名.
FiledType : String; //用來保存創建的字段名類型.
End;
FiledType字段類型的值是以下類型的一種:
Bigint binary bit char datetime decimal float image int money nchar ntext numeric nvarchar real smalldatetime smallint
Smallmoney sql_variant text timestamp tinyint uniqueidentifier varbinary varchar 這些都是MSSQL字段類型值.
再定義一個全局變量:
Var
ISStop : Boolean; //用來判斷用戶是否按下了停止按紐. www.wxvrjzvy.icu
好了。在表單創建的過程中,我們為RECORD記錄輸入默認值.
代碼如下:
procedure TMainForm.FormCreate(Sender: TObject);
begin
sOption.TableName :=’cyfd’
sOption.FieldName :=’gmemo’
sOption.FiledType :=’text’
end;
現在我們添加開始執行命令的代碼。
先定義BDoorList 為TstringList。主要目的就是把木馬的內容加進來.
創建兩個變量來保存urlET.和ShellPathET的值.方便程序簡化調用.
在程序開始執行前,我們得先檢查一下用戶的輸入
定義一個Checkinput函數.
如下:
Function CheckInput : Boolean;
Begin
Result := False;
if Trim(urlet.Text) = ’’ then
Begin
Application.MessageBox(’請輸入URL地址!’,’提示’,mb_ok mb_iconinformation);
Exit;
End;
if Trim(ShellPathET.Text) = ’’ then
Begin
Application.MessageBox(’請輸入文件保存地址!’,’提示’,mb_ok mb_iconinformation);

www.wxvrjzvy.icu


Exit;
End;
IF DefBDoor.Checked then
Begin
if Not FileExists(extractfilepath(Application.ExeName) ’默認木馬.txt’) then
Begin
Application.MessageBox(’沒有找到 [默認木馬.txt] 文件!’,’提示’,mb_ok mb_iconinformation);
Exit;
End;
End
Else
if Not FileExists(CustomBdoorET.Text) then
Begin
Application.MessageBox(’沒有找到所選的木馬文件!’,’提示’,mb_ok mb_iconinformation);
Exit;
End;
Result := True;
End;

 
福彩3d图谜