- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序安全漏洞的案例二 这就是一次最简单的SQL注入漏洞攻击。从这个错误提示我们能得到下面的信息: 网站使用的是Access数据库,通过JET引擎连接数据库,而不是通过ODBC。 程序没有判断客户端提交的数据是否符合程序要求。 该SQL语句所查询的表中有一名为ID的字段。 * 程序安全漏洞的案例二 常见SQL注入漏洞攻击的步骤: 判断能否注入 判断数据库类型及注入方法。 根据获取注入参数类型构造SQL语句。 猜解表名和列名 在表名和列名猜解成功后,使用SQL语句,获取字段值 * 程序安全漏洞的案例二 判断能否注入: 前面例子中的单引号测试并不是常见判断能否注入的方法。如果单引号被过滤掉了,就测不到注入点了。 常见数字型传入参数判断能否注入方法: ① /showdetail.asp?id=49 ② /showdetail.asp?id=49 and 1=1 ③ /showdetail.asp?id=49 and 1=2 这就是经典的1=1、1=2测试法 * 程序安全漏洞的案例二 判断能否注入: 可以注入的表现: ① 正常显示(这是必然的,不然就是程序有错误了) ② 正常显示,内容基本与①相同 ③ 提示BOF或EOF(程序没做任何判断时)、或提示找不到记录(判断了rs.eof时)、或显示内容为空(程序加了on error resume next) 不可以注入表现: ①同样正常显示 ②和③一般都会有程序定义的错误提示,或提示类型转换时出错。 * 程序安全漏洞的案例二 判断数据库类型及注入方法: 不同的数据库的函数、注入方法都是有差异的,所以在注入之前,我们还要判断一下数据库的类型。一般ASP最常搭配的数据库是Access和SQLServer,网上超过99%的网站都是其中之一。 如果服务器IIS不允许返回错误提示,那怎么判断数据库类型呢?我们可以从Access和SQLServer和区别入手。 * 程序安全漏洞的案例二 判断数据库类型及注入方法: Access和SQLServer都有自己的系统表,比如存放数据库中所有对象的表,Access是在系统表[msysobjects]中,但在Web环境下读该表会提示“没有权限”,SQLServer是在表[sysobjects]中,在Web环境下可正常读取。 在确认可以注入的情况下,使用下面的语句: /showdetail.asp?id=49 and (select count(*) from sysobjects)0 /showdetail.asp?id=49 and (select count(*) from msysobjects)0 * 程序安全漏洞的案例二 判断数据库类型及注入方法: 如果数据库是SQLServer,那么第一个网址的页面与原页面/showdetail.asp?id=49是大致相同的;而第二个网址,由于找不到表msysobjects,会提示出错,就算程序有容错处理,页面与原页面完全不同。 如果数据库是Access,那么第一个网址的页面与原页面完全不同。大多数情况下,用第一个网址就可以得知系统所用的数据库类型。 * 程序安全漏洞的案例二 根据获取注入参数类型构造SQL语句: ID=49 这类注入的参数是数字型,SQL语句大致如下: Select * from 表名 where 字段=49 注入的参数为ID=49 And [查询条件],即是生成语句: Select * from 表名 where 字段=49 And [查询条件] * 程序安全漏洞的案例二 猜解表名和列名 将查询条件替换成SQL语句,猜解表名,例如: ID=49 And (Select Count(*) from Admin)=0 如果页面就与ID=49的相同,说明附加条件成立,即表Admin存在,反之,即不存在。如此循环,直至猜到表名为止。 表名猜出来后,将Count(*)替换成Count(字段名),用同样的原理猜解列名。 对于某些数据库,攻击者可以通过程序方法获取表名及列名的。 * 程序安全漏洞的案例二 获取字段值: 在表名和列名猜解成功后,使用SQL语句,得到字段的值。 一种最常用的方法-Ascii逐字解码法:虽然这种方法速度很慢,但肯定是可行的方法。 * 程序安全漏洞的案例二 获取字段值: 例如,已知表Admin中存在use
文档评论(0)