- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQL 注入与 XSS 漏洞
所谓 SQL 注入,就是通过把 SQL 命令插入到 Web 表单递交或输入域名或页面请求
的查询字符串,最终达到欺骗服务器执行恶意的 SQL 命令,比如先前的很多影视网
站泄露 VIP 会员密码大多就是通过 WEB 表单递交查询字符暴出的,这类表单特别容
易受到 SQL 注入式攻击.
当应用程序使用输入内容来构造动态 sql 语句以访问数据库时,会发生 sql 注入
攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串
来传递,也会发生 sql 注入。sql 注入可能导致攻击者使用应用程序登陆在数据库中
执行命令。如果应用程序使用特权过高的帐户连接到数据库,这种问题会变得很严重。
在某些表单中,用户输入的内容直接用来构造(或者影响)动态 sql 命令,或者作为
存储过程的输入参数,这些表单特别容易受到 sql 注入的攻击。而许多网站程序在编
写时,没有对用户输入的合法性进行判断或者程序中本身的变量处理不当,使应用程
序存在安全隐患。这样,用户就可以提交一段数据库查询的代码,根据程序返回的结
果,获得一些敏感的信息或者控制整个服务器,于是 sql 注入就发生了。
注入大致方法:
先猜表名
And (Select count(*) from 表名)0
猜列名
And (Select count( 列名) from 表名)0
或者也可以这样
and exists (select * from 表名)
and exists (select 列名 from 表名)
返回正确的,那么写的表名或列名就是正确
这里要注意的是,exists 这个不能应用于猜内容上,例如 and exists (select le
n(user) from admin)3 这样是不信的
现在很多人都是喜欢查询里面的内容,一旦 iis 没有关闭错误提示的,那么就可
以利用报错方法轻松获得库里面的内容
获得数据库连接用户名:;and user0
这个是小竹提出来的,我这里引用《SQL 注入天书》里面的一段话来讲解:
----------------------------------
------------------------------------
------------------------------------
重点在 and user0 ,我们知道,user 是 SQLServer 的一个内置变量,它的值
是当前连接的用户名,类型为 nvarchar 。拿一个 nvarchar 的值跟 int 的数 0 比较,
系统会先试图将 nvarchar 的值转成 int 型,当然,转的过程中肯定会出错,SQLSer
ver
的出错提示是:将 nvarch
----------------------------------
------------------------------------
------------------------------------
-
看到这里大家明白了吧,报错的原理就是利用 SQLserver 内置的系统表进行转
换查询,转换过程会出错,然后就会显示出在网页上,另外还有类似的 and 1=(sele
t top 1 user from admin),这种语句也是可以爆出来的。;and db_name()0 则
是暴数据库名。
一旦关闭了 IIS 报错,那么还可以用 union (联合查询)来查内容,主要语句就
是
Order by 10
And 1=2 union select 1,2,3,4,5,6,7,8,9,10 from admin
And 1=2 union select 1,2,3,user,5,passwd,7,8,9,10 from admin
上面的 order by 10 主要就是查字段数目,admin 就是表名,可以自己猜,user,
passwd 是列名
反正就是返回正确即对,返回异常即错
文档评论(0)