sql注入天书-asp注入漏洞全接触(编辑修改稿)内容摘要:

(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 逐字解码法,虽然这种方法速度很慢,但肯定是可行的方法。 我们举个例子,已知表 Admin中存在 username 字段,首先,我们取第一条记录,测试长度: and (select top 1 len(username) from Admin)〉 0 先说明原理:如果 top 1 的 username 长度大于 0,则条件成立;接着就是〉 〉〉 3 这样测试下去,一直到条件不成立为止 ,比如〉 7 成立,〉 8 不成立,就是len(username)=8 当然没人会笨得从 0,1,2,3 一个个测试,怎么样才比较快就看各自发挥了。 在得到 username 的长度后,用 mid(username,N,1)截取第 N 位字符,再asc(mid(username,N,1))得到 ASCII 码,比如: id=49 and (select top 1 asc(mid(username,1,1)) from Admin)〉 0 同样也是用逐步缩小范围的方法得到第 1 位字符的 ASCII 码,注意的是英文和数字的 ASCII 码在 1128 之间,可以用折半法加速猜解,如果写成程序测试,效率会有极大的提高。 第二节、SQL注入常用函数 有 SQL语言基础的人,在 SQL注入的时候成功率比不熟悉的人高很多。 我们有必要提高一下自己的 SQL水平,特别是一些常用的函数及命令。 Access: asc(字符 ) SQLServer: unicode(字符 ) 作用:返回某字符的 ASCII 码 Access: chr(数字 ) SQLServer: n。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。