




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SQL_Server数据库注入实验实验目的1、 通过工具注入,获得网站管理权限2、 了解SQL注入的基本原理。3、 了解注入工具的各种常用子功能。实验原理1、 SQL注入原理介绍1.1 什么是SQL注入SQL注入是指攻击者通过在应用程序中预先定义好的查询语句结尾加上额外的SQL语句元素,欺骗数据库服务器执行非授权的任意查询。这类应用程序一般是网络应用程序,它允许用户输入查询条件(一般是在浏览器地址栏进行,通过正常的www端口访问),并将查询条件嵌入SQL请求语句中,发送到该应用程序相关联的数据库服务器中去执行。通过构造一些畸形输入,攻击者能够操作这种请求语句去猜解未授权的内容,也就是SQL I
2、njection,SQL注入。SQL注入是从正常的WWW端口通过对页面请求访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙很少会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。一般来说注入攻击常采用的步骤有发现SQL注入位置、判断后台数据库类型、获取管理员权限,此外在得到网站管理员权限后还可以通过发现虚拟目录、上传木马等手段获取服务器的系统权限。1.2 注入原理概述SQL是一种用于关系数据库的结构化查询语言。它分为许多种,但大多数都松散地基于美国国家标准化组织最新的标准SQL-92。SQL语言可以修改数据库结构和操作数据库内容。当
3、一个攻击者能够通过往查询中插入一系列的SQL操作数据写入到应用程序中去,并对数据库实施了查询,这时就已经构成了SQL-Injection。目前使用的各种数据库如access、SQL Server、my SQL、Oracle等都支持SQL语言作为查询语言,因此,若程序员在编写代码的时候没有对用户输入数据的合法性进行判断,有可能导致应用程序的安全隐患,攻击者根据返回的结果,获得某些想得知的数据。1.3 Access数据库的注入原理Access数据库的注入就是提交SQL语句,然后根据返回信息来判断是否正确,从而获得数据库中有价值的内容,其主要是通过猜解得过程来实现注入。第一步 确定注入点:通常用“
4、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等表)进行猜解如果存在该表名返回页面结果为正常
5、页面,如果不存在则返回为出错信息。常用的SQL语句为 and 0(select count(*)from admin)第三步 猜解某表名中存在的字段知道表段名后,再查看表中是否有常用字段,一般感兴趣的都是类似用户名、密码的字段,进行猜解后如果返回正常内容,表示存在某个字段,否则为出错信息。常用的SQL语句为:1=(select count(*)from 表名 where len(pass)0)(判断是否有pass字段),猜测字段时有可能需要重复以上步骤数次才能找到合适的字段名。第四步 猜测字段内容这是比较复杂的一步,猜测字段内容也可以使用SQL构造语句,例如常用到得SQL语句:and (sel
6、ect 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注入一般分为手工注入和工具注入两种,手工注入需要
7、攻击者自行构造SQL语句实现注入,工具注入对于初学者来说要简单得多,例如:网络上流行的阿D,明小子等注入工具都是依据相同原理而设计的。第五步:管理员身份登陆以管理员用户身份登陆:一般来说查找管理员入口是手动注入的一个难点,有的网站上在页面首先会显示管理员入口的链接,此时只需要在管理员页面输入猜测得到的管理员用户名和密码,即可登陆。但若管理员入口不明,则需要通过尝试的方法获取,这种尝试是一种经验的尝试。例如admin页面,adminlogin页面、admin/admin页面等。1.4 SQL Server注入原理SQL Server数据库的注入与access数据库注入有相似之处,只是其攻击的方式
8、更为多种多样。首先可以通过服务器IIS的错误提示来鉴别数据库类型,在地址栏最后输入“”,如果是access数据库那么会返回Microsoft JET Database Engine 错误80040e14;若是SQL Server数据库,返回Microsoft OLE DB Provider for OBDC Drivers 错误80040e14。同样,如果IIS错误信息提示被关闭,可以通过猜测是否存在系统表,例如sysobjects表等来判断数据库类型。此外,由于SQL Server数据库存在帐户权限,所以如果发现有sa权限的注入点,今年改过尝试,可通过上传或写入配置文件等方法获得webshe
9、ll得到服务器的控制权限,从而拿到服务器的系统权限。1.5 PHP注入原理php注入与asp注入还是有区别的,我们要进行的是跨表查询要用到UNION.UNION是连接两条SQL语句,UNION后面查选的字段数量、字段类型都应该与前面SELECT一样.通俗点说如果查寻对的话就出现正常的页面. 在SQL语句中,可以使用各种 MySQL内置的函数,经常使用的就是DATABASE()、USER()、SYSTEM_USER()、SESSION_USER()、 CURRENT_USER()这些函数来获取一些系统的信息,例如:load_file(),该函数的作用是读入文件,并将文件内容作为一个字符串返回。如
10、果该文件不存在,或因为上面的任一原因而不能被读出,函数返回空。php注入就是利用变量过滤不足造成的 看看下面两句SQL语句: SELECT * FROM article WHERE articleid=$id SELECT * FROM article WHERE articleid=$id 两种写法在各种程序中都很普遍,但安全性是不同的,第一句由于把变量$id放在一对单引号中,这样使得我们所提交的变量都变成了字符串,即使包含了正确的SQL语句,也不会正常执行,而第二句不同,由于没有把变量放进单引号中,那我们所提交的一切,只要包含空格,那空格后的变量都会作为SQL语句执行,我们针对两个句子分别
11、提交两个成功注入的畸形语句,来看看不同之处。 指定变量$id为: 1 and 1=2 union select * from user where userid=1/* 此时整个SQL语句变为: SELECT * FROM article WHERE articleid=1 and 1=2 union select * from user where userid=1/* 指定变量$id为: 1 and 1=2 union select * from user where userid=1 此时整个SQL语句变为: SELECT * FROM article WHERE articleid=1
12、 and 1=2 union select * from user where userid=1 看出来了吗?由于第一句有单引号,我们必须先闭合前面的单引号,这样才能使后面的语句作为SQL执行,并要注释掉后面原SQL语句中的后面的单引号,这样才可以成功注入,如果php.ini中magic_quotes_gpc设置为on或者变量前使用了addslashes()函数,我们的攻击就会化为乌有,但第二句没有用引号包含变量,那我们也不用考虑去闭合、注释,直接提交就OK了。通常PHP注入的步骤如下:1) 先查看是否存在漏洞2) 判断版本号以决定是否可以用union连接,and ord(mid(versio
13、n(),1,1)51 /*3) 利用order by 暴字段,在网址后加 order by 10 /* 如果返回正常说明字段大于104) 再利用union来查询准确字段,如: and 1=2 union select 1,2,3,./*直到返回正常,说明猜到准确字段数。如过滤了空格可以用/*/代替。5) 判断数据库连接帐号有没有写权限,and (select count(*) from mysql.user)0 /*如果结果返回错误,那我们只能猜解管理员帐号和密码了。6) 如果返回正常,则可以通过and 1=2 union select 1,2,3,4,5,6,load_file(char(文
14、件路径的ascii值,用逗号隔开),8,9,10 /* 注:load_file(char(文件路径的ascii值,用逗号隔开)也可以用十六进制,通过这种方式读取配置文件,找到数据库连接等。7) 首先猜解user表,如: and 1=2 union select 1,2,3,4,5,6. from user /* 如果返回正常,说明存在这个表。8) 知道了表就猜解字段,and 1=2 union select 1,username,3,4,5,6. from user/*如果在2字段显示出字段内容则存在些字段。9) .同理再猜解password字段,猜解成功再找后台登录。10) 登录后台,上传s
15、hell2、 防御技术从前面讲述的原理可以看出,在数据没有经过服务器处理之前就进行严格的检查,才是最根本防御SQL注入的方法。对提交数据进行合法性检查得方法来过滤掉SQL注入的一些特征字符,也可以通过替换或删除敏感字符/字符串、封装客户端提交信息、屏蔽出错信息等方法来修补漏洞、防止SQL注入。例如:admin1=replace(trim(request(“admin”),”,”)password1=replace(trim(request(“password”),”,”)这两句语句就过滤掉SQL语句提交时的号。此外,也可以通过给用户密码加密的方法,增加破解的难度,例如使用MD5加密,这样即使获
16、取了密码也是加密后的密码,无法获取原始密码。实验要求1、 认真阅读和掌握本实验相关的知识点。2、 上机实现软件的基本操作。3、 得到实验结果,并加以分析生成实验报告。注:因为实验所选取的软件版本不同,学生要有举一反三的能力,通过对该软件的使用能掌握运行其他版本或类似软件的方法。实验步骤1、找到有注入漏洞的目标网站本实验预先配置好一个目标网站:8080/aiyaya/default.asp(凹丫丫新闻系统),访问该网站,并运行注入工具啊D注入工具 V2.31,在该工具的文件夹中同样有一个mdb的数据库,里面存放了预先设定好的表名、字段名、字段内容等字典。点击左边菜单
17、中的“扫描注入点”,在检测网址处输入目标网站地址,点击,运行网站,并自动检测注册点。如图3- 1注入漏洞检测、图3- 2注入漏洞检测结果:图3- 1注入漏洞检测图3- 2注入漏洞检测结果说明:在实际攻击中,若受网速等原因影响,目标网站打开速度过慢,可以选择打开网页,表示,停止打开网页,并检测注入点。由上图图3- 2注入漏洞检测结果的结果可以看出,红色标记位置给出了两个可注入点。与access数据库注入相同,可以点击任一链接,自动进入SQL注入检测(具体过程实验2有介绍,此处不再做详细介绍)2、SQL注入检测点击“检测”开始进行SQL注入检测,检测结果如图3- 3注入漏洞信息:图3- 3注入漏洞
18、信息从检测结果可以看出,“检测表段”的按钮变为可用,表示有注入的可能,在数据库的类型中,判断为MSSQL数据库显错模式,即网页会显示错误信息,有经验的攻击者可以根据故意制造错误的SQL语句,通过错误信息,得到更多的信息。如图3- 4检测漏洞出错界面:图3- 4检测漏洞出错界面此外,结果还显示了数据库名称,当前使用的用户权限以及用户名等信息,这些信息都为进一步攻击提供了有力的帮助。3、猜测表段名 点击“检测表段”,将自动检测可能得表段名。结果如图3- 5检测表名:图3- 5检测表名4、猜测字段名:攻击者根据从表段名中检测出来的表段,根据自己的需要选择需要猜测的表,并开始检测字段。本例中,目的是为
19、获取管理员权限,因此选择admin表来猜测字段。猜测字段名,同样点击“检测字段”,如图3- 6检测字段名:图3- 6检测字段名说明:在“检测表段”和“检测字段”下有一个“MSSQL专用表段检测”“MSSQL专用字段检测”的按钮,该按钮是针对无显错模式下,读取全部表段和字段的过程。5、猜测字段内容与access数据库使用的工具不同,该工具可以同时对多个字段的内容进行猜测,用户可以选中需要猜测的字段名多选框,点击“检测内容”,进行内容的猜测。如图3- 7选择字段猜测字段内容:图3- 7选择字段猜测字段内容此时,检测结果中会显示,猜测到得指定字段名中的所有内容。需要注意的是,从密码的内容可以看出,该
20、用户密码并没有以明文存储,因为所猜测出来的密码是直接读取数据库中的信息。 有经验的攻击者可以根据密码的组成,猜测大致的加密方法,从本例中看,该密码有可能采用MD5加密方法进行加密。可以点击需要破解的密码,点击右键,选中“复制内容”,将密码复制下来,如图3- 8解密字段内容:图3- 8解密字段内容在网上找到MD5在线解密的网站,尝试是否能破解,经过MD5解密,得到密码原文为:oyaya。6、以管理员身份登陆由于该网站管理员入口在首页中有链接,因此不用猜测管理员入口,点击进入管理员入口,输入得到的用户名、密码,以管理员身份登陆。如图3- 9后台界面、图3- 10成功登录:图3- 9后台界面图3- 10成功登录说明:若找不到管理员入口,可以使用前面讲到的“管理员入口探测”菜单进行探测,操作方法与实验二相同。7、目录查看在注入检测完毕以后,该软件的目录查看功能,还能帮助攻击者查看web服务器上的文件目录,点击“相关工具”中的“目录查看”,选择需要检测的位置(c、d、e等盘),点击“进行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学生意外受伤课件图片
- 小学人教版四年级上册期中考试语文试卷
- 危险化学品生产企业安全试题
- 专升本金融学试题及答案
- 大班身体健康公开课课件
- 防讯培训考试题库及答案
- 高级电工考试试题及答案
- 绿化养护合同协议书模板
- 戒毒康复考试题及答案
- 小麦买卖合同协议书
- 光伏作业活动风险分级管控清单参考模板范本
- The Three Goats(课件)译林黑布林分级绘本
- GB/T 9865.1-1996硫化橡胶或热塑性橡胶样品和试样的制备第一部分:物理试验
- 大一物理实验报告 答辩 霍尔效应与应用设计PPT
- 《巡游出租汽车经营申请表》
- 2023年山东高考英语试题答案及详细解析word版
- 《职业病危害因素分类目录》(国卫疾控发〔2015〕92号)
- 特种作业人员台账及个人档案表
- 2022内分泌内科三基考试题库及答案
- 统编人教部编版语文六年级下册期末总复习课教学策略教学指导教研备课校本培训课件
- 幼儿园复读申请书模板
评论
0/150
提交评论