当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL注入漏洞全接触--进阶篇(一)

MSSQL
SQl 跨服务器查询语句
sql2005 HashBytes 加密函数
防止SQLSERVER的事件探查器跟踪软件
Excel导入Sqlserver数据库脚本
sql cast,convert,QUOTENAME,exec 函数学习记录
select into 和 insert into select 两种表复制语句
sqlserver 日志恢复方法(搞定drop和truncate)
海量数据库查询语句
DBCC CHECKIDENT 重置数据库标识列从某一数值开始
MSSQL 数据库同步教程
sql 语句中的 NULL值
判断一个表的数据不在另一个表中最优秀方法
SQL货币数字转英文字符语句
executesql 存储过程
sql 查询结果合并union all用法_数据库技巧
SQLServe 重复行删除方法
SQLServer 数据修复命令DBCC一览
SQLSERVERS 数据整理方法
根据多条件查询临时表 想得到不同结果集的方法
sqlServer 获取汉字字串的拼音声母

MSSQL 中的 SQL注入漏洞全接触--进阶篇(一)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 32 ::
收藏到网摘: n/a

接下来,我们就继续学习如何从数据库中获取想要获得的内容,首先,我们先看看SQL注入的一般步骤:  

  第一节、SQL注入的一般步骤  

  首先,判断环境,寻找注入点,判断数据库类型,这在入门篇已经讲过了。  

  其次,根据注入参数类型,在脑海中重构SQL语句的原貌,按参数类型主要分为下面三种:  

  (A) ID=49 这类注入的参数是数字型,SQL语句原貌大致如下:

  Select * from 表名 where 字段=49

  注入的参数为ID=49 And [查询条件],即是生成语句:

  Select * from 表名 where 字段=49 And [查询条件]  

  (B) Class=连续剧 这类注入的参数是字符型,SQL语句原貌大致概如下:

  Select * from 表名 where 字段=’连续剧’

  注入的参数为Class=连续剧’ and [查询条件] and ‘’=’ ,即是生成语句:

  Select * from 表名 where 字段=’连续剧’ and [查询条件] and ‘’=’’  

  (C) 搜索时没过滤参数的,如keyword=关键字,SQL语句原貌大致如下:

  Select * from 表名 where 字段like ’%关键字%’

  注入的参数为keyword=’ and [查询条件] and ‘%25’=’, 即是生成语句:

  Select * from 表名 where字段like ’%’ and [查询条件] and ‘%’=’%’  

  接着,将查询条件替换成SQL语句,猜解表名,例如:  

  ID=49 And (Select Count(*) from Admin)>=0  

  如果页面就与ID=49的相同,说明附加条件成立,即表Admin存在,反之,即不存在(请牢记这种方法)。如此循环,直至猜到表名为止。  

  表名猜出来后,将Count(*)替换成Count(字段名),用同样的原理猜解字段名。  

  有人会说:这里有一些偶然的成分,如果表名起得很复杂没规律的,那根本就没得玩下去了。说得很对,这世界根本就不存在100%成功的黑客技术,苍蝇不叮无缝的蛋,无论多技术多高深的黑客,都是因为别人的程序写得不严密或使用者保密意识不够,才有得下手。  

  有点跑题了,话说回来,对于SQLServer的库,还是有办法让程序告诉我们表名及字段名的,我们在高级篇中会做介绍。  

  最后,在表名和列名猜解成功后,再使用SQL语句,得出字段的值,下面介绍一种最常用的方法-Ascii逐字解码法,虽然这种方法速度很慢,但肯定是可行的方法。