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

SQL 注入原理与实战 * * * * 肖博 xiaobo01@ 大纲 1、名词解释 2、SQL注入原理 3、SQL注入危害 4、SQL注入来源 5、SQL注入三部曲 6、SQL构造演练 7、SQL注入防御 8、总结 名词解释 SQL Structured Query Language 即结构化查询语句。 SQL注入 SQL Injection 就是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力。 注入点 所谓注入点就是可以实行注入的地方,通常是一个访问数据库的连接。 webshell 匿名用户(入侵者)通过网站端口对网站服务器的某种程度上操作的权限(俗称后门工具)。 SQL注入的危害 未经授权状况下操作数据库中的数据,既数据窃取。 恶意篡改网页内容,既恶意破坏。 得到管理员密码,私自添加系统帐号或者是数据库使用者帐号 绕过登陆密码登录网站后台。 获取webshell,进一步得到系统权限,控制操作系统。 …… …… SQL注入攻击来源 SQL Injection 攻击技术就其本质而言,它利用的工具是SQL的语法,针对的是应用程序开发者编程中的漏洞,当攻击者能操作数据,向应用程序中插入一些SQL语句时,SQL Injection攻击就发生了。SQL注入存在主要由有以下几点造成: 1.程序员水平和经验的欠缺,对SQL注入不够重视或者没有防范意识。 2.现在许多教程或者模版存在SQL注入漏洞。 3.Internet上给出的许多解决办法并未解决办法。 4.数据库管理员对数据库权限设置不合理。 SQL注入三部曲 第一部 寻找注入点 寻找注入点的方法: 1. 首先把IE菜单=工具=Internet选项=高级=显示友好 HTTP 错误信息前面的勾去掉,如果不勾掉,则无论服务器返回什么错误,都只显示为HTTP 500服务器错误。 2.现在在Internet上存在这样一个网页:/news.asp?id=349 测试环境,寻找注入点: /news.asp?id=349,在id=349加后: SQL注入三部曲 Microsoft JET Database Engine 错误 80040e14 字符串的语法错误 在查询表达式 id=349 中。 /news.asp,行 16 从上面这个错误信息中,我们可以得到以下信息: 从这个错误提示我们能看出下面几点: 1. 网站使用的是Access数据库,通过JET引擎连接数据库,而不是通过ODBC。 2. 程序没有判断客户端提交的数据是否符合程序要求。 3. 该SQL语句所查询的表中有一名为ID的字段。 SQL注入三部曲 最常用的方法: ;and 1=2; and 1=1;or 1=1;or 1=2; 1.继续用上面的链接举例: /news.asp?id=349 通过 测试后,发现该链接没有对输入做检测, /news.asp?id=349 and 1=1 测试正常(如果不正常,那程序逻辑就有问题) /news.asp?id=349 and 1=2 测试报错:错误 /news.asp,行 17 SQL注入三部曲 第二部 构造SQL注入代码 构造SQL注入代码需要对SQL语言有较深的理解,也就是说对SQL语言越熟悉SQL注入成功的概率越大,而且能够要懂得利用不同数据库软件的特点,比如SQLServer数据库的sa账户,mysql账户的root账户都是特权账户。 1.在第一部的基础上我们继续: /news.asp?id=349 and (select count(*) from msysobjects)0 服务器返回:Microsoft JET Database Engine 错误 80040e09 不能读取记录;在 msysobjects 上没有读取数据权限。 这里需要一些经验: /news.asp?id=349 and (select count(*) from admin)0 正常执行 SQL注入三部曲 /news.asp?id=349 and (select top 1 password from admin ) /news.asp?id=349 and (select top 1 password from admin ) 上面这两个构造的SQL都正常执行,说明我们的猜测是正确的。admin表中存在两个字段username,password。 猜解字段的步骤: SQL注入三部曲 继续:构造这样一个SQL /news.asp?id=349 and (select * from admin

文档评论(0)

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

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

1亿VIP精品文档

相关文档