/*! MySQL-specific code */

mysql的关键词绕过waf方法里面有一种是/*!50000 SELECT*/,网上只有绕过方法,难以找到解释,在翻阅查询了mysql帮助手册后了解了原理,在此记录。

在手册的1.8.1 MySQL Extensions to Standard SQL里对此进行了说明。
实际上/*! MySQL-specific code*/这种写法是一种兼容性写法,只有mysql会执行该sql语句,而其他数据库则会无视。也就是说,如果是oracle mssql 等其他数据库的话,会无视/**/内部的字符串,而mysql是会执行的。
而如果带数字,如/*!50000 SELECT*/,指的是当mysql的版本等于或高于5.00.00的时候才会执行SELECT。
另外,该数字代表的版本号需要一个五位数数字,00000也是可以的。
另外,可以使用多重兼容写法绕过部分waf,for example

1
/*!50500select/*!1/*!from/*!tab/*!where/*!12345id/*!50201=/*!1*/;