SQL注入实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL注入实验
【实验环境】
本地主机(WindowsXP系统)、Windows实验台(Windows2003系统)、动网论坛6.0版本实验目标需首先确定所在主机实验台IP地址,并根据实验步骤填写正确的IP地址进行实验。实验拓扑如图3.6.1-1所示。
Windows实验台
本地主机
图3.6.1-1
【实验步骤】
启动虚拟机,并设置实验台的IP地址,以实验台为目标主机进行攻防试验。个别实验学生可以以2人一组的形式,互为攻击方和被攻击方来做实验。
一、获取后台用户名
以动网论坛6.0为例,在地址栏中输入http:// 实验台的IP/page6/index.asp 访问论坛首页,通过下图可以看到一共有2位注册会员。
图 3.6.1-2
http:// 实验台的IP/Page6/tongji.asp?orders=2&N=10 后显示出了整个论坛中2位用户的用户名。
图 3.6.1-3
(1)在地址栏中输入:(注意输入命令最后的逗号)
http:// 实验台的IP/Page6/tongji.asp?orders=2&N=10%20userclass,后,如下显示,其中管理员的身份已经被标出。
图 3.6.1-4
(2)在地址栏中输入:(注意输入命令最后的逗号)
http:// 实验台的IP/Page6/tongji.asp?orders=2&N=10%20userid,
显示论坛中用户的注册次序。
图 3.6.1-5
(3)在地址栏中输入: (注意输入命令最后的逗号)
http:// 实验台的IP/Page6/tongji.asp?orders=2&N=10%20userpassword,显示2个用户的密码,被MD5进行了加密。
图 3.6.1-6
(4)在地址栏中输入: (注意输入命令最后的逗号)
http:// 实验台的IP/Page6/tongji.asp?orders=2&N=10%20quesion,显示的是论坛中用户忘记密码后的提示问题。
图 3.6.1-7
(5)在地址栏中输入: (注意输入命令最后的逗号)
http:// 实验台的IP/Page6/tongji.asp?orders=2&N=10%20answer,显示用户忘记密码后提示问题的答案,也是通过MD5加密的。
图 3.6.1-8
二、构造SQL注入点
构造SQL注入点文件(slq.asp),代码如下:(注:此sql.asp文件可以从工具箱中下载) <%
strSQLServerName = "." '数据库实例名称(说明: “.”表示本地数据库)
strSQLDBUserName = "sa" '数据库帐号
strSQLDBPassword = "123456" '数据库密码
strSQLDBName = "test" '数据库名称
Set conn = Server.createObject("ADODB.Connection")
strCon = "Provider=SQLOLEDB.1;Persist Security Info=False;Server=" & strSQLServerName & ";User ID=" & strSQLDBUserName & ";Password=" & strSQLDBPassword & ";Database=" & strSQLDBName & ";"
conn.open strCon
dim rs,strSQL,id
set rs=server.createobject("ADODB.recordset")
id = request("id")
strSQL = "select * from admin where id=" & id
rs.open strSQL,conn,1,3
rs.close
%>
Test!!!!
一般在写ASP程序的时候,会反复调用数据库,为了管理方便,所以把这个连接数据库的语句和配置写成一个独立的文件,需要用的时候再引用。后来这方法广泛使用,也就是conn.asp这个文件,全称是:connection,也就是连接的意思。一般为了防止SQL注入,会在conn.asp文件中对行动态调用的变量进行一些关键字或者符号进行过滤。如果在conn.asp 文件中没有对这些符号或关键字进行过滤,当在进行动态调用的时候就可出现注入点从而实现注入。
上面的代码基于此原理而写。其中strSQL = "select * from admin where id=" & id可以判断这是一种数字型的注入(如果是字符型则应为在id后加撇号‘)。在这里,我把这个写好的存在漏洞的文件保存为sql.asp,放入实验台中动网6.0的根目录中。在该文件中,并没有对变量字段id进行过滤。因此该注入点可被找到并注入。
启动啊Dsql注入工具,直接单击[登陆] 按钮进入攻击界面:
图 3.6.1-9
在检测网址输入框中输入我们构造的SQL注入点”http://实验台IP/page6/sql.asp?id=1”,点击红色的打开网页图标。
这时我们可以看到该工具已经检测出注入点,并用红色的字体标出。
图 3.6.1-10
选择SQL注入检测,界面如下:
图 3.6.1-11
点击检测按键后,界面为:
图 3.6.1-12
点击检测表段、字段按钮,则会显示出我们之前所建立的表和字段,在点检测内容,则把我们所构造的表中的所有信息全显示了出来。在底下的当前库中显示了该表所在的数据库。连接类型为数字型也被检测出来了。数据库也显示出来了MSSQL,当前用户为dbo,即sa。当前的权限也为sa权限。点击跨库按键,则显示出了当前主机中所有的数据库。如
下图所示。
图 3.6.1-13
从列表中选择某个数据库,然后点击检测表段、字段、内容。所选数据库中的所有内容
都可以被显示出来。如下图所示。