В MySQL и ее форках можно использовать versioned comments, что позволяет в некоторых кейсах с точностью узнать версию СУБД.
Допустим, у тебя потенциальная SQLi в параметре
id, но атака возможна только в слепом режиме, и ты не знаешь тип/версию СУБД.👉 Попробуй заменить значение параметра на:
/*!50000 <id_value>*/
Если страница вернёт тот же контент, что и при обычном id, значит, скорее всего, приложение использует MySQL, форки или совместимые СУБД с версией ≥ 5.0.0.Дальше можно играться с числами (
/*!51000 ...*/, /*!51010 ...*/ и т. д.) и нащупать точную версию без вызова функции version().Такой кейс позволяет обнаружить MySQL и заодно часто обходить WAF — фильтры могут просто игнорировать эти конструкции.
🌡 Логика простая: часть внутри
/*!<число> ...*/ выполнится только если версия БД ≥ этого числа. Это даёт возможность прятать пэйлоад прямо внутри комментариев.Кстати,
sqlmap уже умеет использовать этот кейс через tamper. А если число не указано (например, просто /*! ... */), то содержимое выполняется всегда.
