mysql make_set函数:
通常用于concat等函数被禁止使用的场景,可以结合updatexml等函数进行报错注入
make_set函数可以返回相应位的字符串,语法格式为:
MAKE_SET(bits,str1,str2,…)
bits将输入的值转为二进制 然后会倒过来,从低位到高位,去除1所对应位置的字符串并返回
测试sql语句如下:
select make_set(1,'a','b','c','d');

bits为1 数字1转为2进制为 00000001 倒过来从低位到高位为10000000 故取只有第一位为1 故取第一个字符串a并返回
select make_set(2,'a','b','c','d');

bits为2 数字2转换为2进制为00000010 倒过来从低位到高位为01000000 第二位为1 于是取第二个字符串b 并返回
select make_set(3,'a','b','c','d');

bits为3 数字3转换为2进制为00000011 倒过来从低位到高位为11000000 第一位和第二位为1 取第一个和第二个字符串并返回
select make_set(1|4,'a','b','c','d');

bits为1 | 4 先取数字1的二进制为00000001 数字4的二进制为00000100 然后或运算后为 00000101 依旧倒过来为10100000 可以看到第一位和第三位为1 于是取a和c并返回
浙公网安备 33010602011771号