SQL_Server数据库注入实验综述.doc

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

SQL_Server数据库注入实验 实验目的 通过工具注入,获得网站管理权限 了解SQL注入的基本原理。 了解注入工具的各种常用子功能。 实验原理 SQL注入原理介绍 1.1 什么是SQL注入 SQL注入是指攻击者通过在应用程序中预先定义好的查询语句结尾加上额外的SQL语句元素,欺骗数据库服务器执行非授权的任意查询。这类应用程序一般是网络应用程序,它允许用户输入查询条件(一般是在浏览器地址栏进行,通过正常的www HYPERLINK /Article/Special/port/ 端口访问),并将查询条件嵌入SQL请求语句中,发送到该应用程序相关联的数据库服务器中去执行。通过构造一些畸形输入,攻击者能够操作这种请求语句去猜解未授权的内容,也就是SQL Injection,SQL注入。 SQL注入是从正常的WWW端口通过对页面请求访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙很少会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。 一般来说注入攻击常采用的步骤有发现SQL注入位置、判断后台数据库类型、获取管理员权限,此外在得到网站管理员权限后还可以通过发现虚拟目录、上传木马等手段获取服务器的系统权限。 1.2 注入原理概述 SQL是一种用于关系数据库的结构化查询语言。它分为许多种,但大多数都松散地基于美国国家标准化组织最新的标准SQL-92。SQL语言可以修改数据库结构和操作数据库内容。当一个攻击者能够通过往查询中插入一系列的SQL操作数据写入到应用程序中去,并对数据库实施了查询,这时就已经构成了SQL-Injection。 目前使用的各种数据库如access、SQL Server、my SQL、Oracle等都支持SQL语言作为查询语言,因此,若程序员在编写代码的时候没有对用户输入数据的合法性进行判断,有可能导致应用程序的安全隐患,攻击者根据返回的结果,获得某些想得知的数据。 1.3 Access数据库的注入原理 Access数据库的注入就是提交SQL语句,然后根据返回信息来判断是否正确,从而获得数据库中有价值的内容,其主要是通过猜解得过程来实现注入。 第一步 确定注入点: 通常用“ and 1=1”或者“ and 1=2”等来确认(注意:and两边各有一处空格)。若第一个语句后页面正常显示,第二个语句执行后出现错误信息,整个SQL查询语句变为了SQL=”select *from 表名where id=”xx and1=2或 SQL=”select *from 表名where id=”xx and 1=1 的永真、永假条件,那说明该网站存在SQL注入。 第二步 猜解表名 一般程序员在创建数据库时会根据意义来命名,所以需要找到管理员信息时可以尝试检测是否存在admin表,admin这个表名可以替换成其它的表名(如user、manage等表)进行猜解如果存在该表名返回页面结果为正常页面,如果不存在则返回为出错信息。常用的SQL语句为 and 0(select count(*)from admin) 第三步 猜解某表名中存在的字段 知道表段名后,再查看表中是否有常用字段,一般感兴趣的都是类似用户名、密码的字段,进行猜解后如果返回正常内容,表示存在某个字段,否则为出错信息。常用的SQL语句为:1=(select count(*)from 表名 where len(pass)0)(判断是否有pass字段),猜测字段时有可能需要重复以上步骤数次才能找到合适的字段名。 第四步 猜测字段内容 这是比较复杂的一步,猜测字段内容也可以使用SQL构造语句,例如常用到得SQL语句:and (select top 1 asc(mid(usernameN1)) from Admin)0。猜解第N位的ASCII码0取值从负数到正数都有可能,当然常见的 密码都是数字加字母的组和,它们的ASCII值在0-128之间,将值替换为这之间的值,如果正确,则返回正常页面,如果不是则返回出错,将N分别替换为1、2、3、4……反复猜解即可得出字段每一个位数的值而得到密码,参数N为字段的位数,如果是(mid(username11)),则查找username字段中的第一位,依此类推。整个语句的最右边“0”,数字0表示的是ASCII码,并不是真正的字段位数相应的字符。 SQL注入一般分为手工注入和工具注入两种,手工注入需要攻击者自行构造SQL语句实现注入,工具注入对于初学者来说要简单得多,例如:网络上流行的阿D,明小子等注入工具都是依据相同原理而设计的。 第五步:管理员身份登陆 以管理员用户身份登陆:一般来说查找管理员入口是手动注入的一个难点,有的网站上在页面首先会显示管理员入口的链接,此时只需要在管理员页面

文档评论(0)

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

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档