一、常用SQL注入函数
有SQL语言基础的人,在SQL注入的时候成功率比不熟悉的人高很多。我们有必要提高一下自己的SQL水平,特别是一些常用的函数及命令。
Access:asc(字符) SQLServer:unicode(字符)
作用:返回某字符的ASCII码
Access:chr(数字) SQLServer:nchar(数字)
作用:与asc相反,根据ASCII码返回字符
Access:mid(字符串,N,L) SQLServer:substring(字符串,N,L)
作用:返回字符串从N个字符起长度为L的子字符串,即N到N+L之间的字符串
Access:abc(数字) SQLServer:abc (数字)
作用:返回数字的绝对值(在猜解汉字的时候会用到)
Access:A between B And C SQLServer:A between B And C
作用:判断A是否界于B与C之间
补充: 1.注入参数是字符 ‘and [查询条件] and ‘’=’
2.搜索时没过滤参数的 ‘and [查询条件] and ‘%’=’
3.猜字段的ascii值(access) ;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0
4.猜字段的ascii值(mssql) ;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0
二、中文处理方法
1、MS-SQL中的汉字猜测 可以说MS-SQL下的汉字是不用猜测的,你只要构造的条件足够的好,可以直接让对方在报错的时候将数据内容直接显示出来。
2、ACCESS中汉字字符的猜测
●汉字字符的确定
●间接的猜测法
●直接的猜测法
注意两点:
Access中,中文的ASCII码可能会出现负数,取出该负数后用abs()取绝对值,汉字字符不变。
SQLServer中,中文的ASCII为正数,但由于是UNICODE的双位编码,不能用函数ascii()取得ASCII码,必须用函数unicode ()返回unicode值,再用nchar函数取得对应的中文字符。
PS: 中文猜解和英文差不多,除了使用的函数要注意、猜解范围大一点外,其它的都差不多。