PDA

Просмотр полной версии : Blind Sql injection in Mssql


ShAnKaR
22.11.2007, 01:28
ктонибудь представляет как провернуть сабж? фишка с бенчмарком если он есть не подходит с if там синтаксис другой совсем не как в mysql. заранее спасибо.

Scipio
22.11.2007, 01:32
Я представляю, могу помочь, излагай, покрайней мере попробую

ShAnKaR
22.11.2007, 01:53
да че тут излагать - нужно данные из базы вытащить но они естественно ни где не отображаются тоесть можно использовать только логическое да или нет тоесть чтоб при false выдавалась ошибка в sql запросе при true не выдавалась вот и все.
вробовал через select 1 where (select 'xxxxxxx')=1 ни фига не выводит ошибки что типы не соответствуют , вот спрашиваю можно ли как то еще провернуть сабж ?

Scipio
22.11.2007, 02:02
а union select некатит? также можно поиграть с and и or, может с типами данных попробовать, так тяжело сказать, это все от конкретного случая зависит, кинь линк, сюда или в личку мне, скорее всего смогу помочь

ShAnKaR
22.11.2007, 02:05
линк естественно ни куда не буду кидать ) ты мне напиши примеры запросов что я понял что ты имеешь в виду, большое спасибо.

Scipio
22.11.2007, 02:16
смотри, как знаешь,вот примеры:
select 1 where id=4 and substr((select 'xxxxxxx'),1,1)='x'
при правильном варианте, выполнится запрос select 1 where id=4

select 1 where id=4 or substr((select 'xxxxxxx'),1,1)='x'
при не правильном варианте, выполнится запрос select 1 where id=4

дальше перебор

я тебе очень советую попробовать вариант с union select

а также разделение запросов ; и выполнение sp_makewebtask, для получения данных, если есть права на использование этой комманды


ты вот пишешь, что ошибок связанных с типами данных нет, а другие ошибки выводит?

blackybr
22.11.2007, 02:21
вообще практически аналогично..
шанк - https://forum.antichat.ru/thread45983.html

или запрос какой-то специфический?

ShAnKaR
22.11.2007, 02:23
о результате запроса я могу судить только по тому что выпала ошибка или нет,сам результат запроса он мне не кажет, sp_makewebtask не подходит так как я не знаю полного пути к скрипту. что за пример с union select ? это ты имеешь ввиду select 1 union select 1,1 ? ну так если это то оно всегда выводить будет ошибку при любых условиях в if.

ShAnKaR
22.11.2007, 02:27
вообще практически аналогично..
шанк - https://forum.antichat.ru/thread45983.html

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

Scipio
22.11.2007, 02:30
ну тогда пользуй подзапросы, пример которых я тебе привел, а при чем тут if? напиши модель запроса, который исполняется на сервере, а тоя чето действительно не понимаю откуда if взялось

ShAnKaR
22.11.2007, 02:35
кароче приблезительно идет изначально такой запрос в скрипте:
bla bla lba SelectwhoOnline 'bla_var',1,1,1,1
тоесть выполняется процедура или пользовательская функция SelectwhoOnline и вот в место значения 'bla_var' можно вставить свой запрос, вот я и закрываю эту функцию чтоб она не вызвала ошибки bla_var',1,1,1,1; а потом вставляю sql inj но его результат естественно не отображается и о выполнении я могу судить только по ошибкам.

ShAnKaR
22.11.2007, 02:37
смотри, как знаешь,вот примеры:
select 1 where id=4 and substr((select 'xxxxxxx'),1,1)='x'
при правильном варианте, выполнится запрос select 1 where id=4

select 1 where id=4 or substr((select 'xxxxxxx'),1,1)='x'
при не правильном варианте, выполнится запрос select 1 where id=4

и как же я смогу узнать что именно выполнилось?
еще раз прошу написать что ты имеешь ввиду под 'запрос с union' ?

Scipio
22.11.2007, 02:53
ага насколько я понял, union не прокатит, я про тот запрос c union, который в mysql используется

попробуй сначала запрос без использования and substr((select 'xxxxxxx'),1,1)='x', результат выполнения и будет как бы шаблоном правильного варианта, а потом подставляй подзапросы и смотри изменения

ShAnKaR
22.11.2007, 03:03
я хз какой раз повторяю что запрос влияет на отображаемую страницу только в одном случае- когда есть ошибка в синтаксисе запроса, больши ни когда!!!

попробуй сначала запрос без использования and substr((select 'xxxxxxx'),1,1)='x', результат выполнения и будет как бы шаблоном правильного варианта, а потом подставляй подзапросы и смотри изменения

как же я могу увидеть изменения?

пока ни кто не помог (((

Spyder
22.11.2007, 03:54
ну в общем то Scipio правильно тебе посоветовал с подзапросами
Попробуй выполнить
select 1 where id=4 and 1=1
select 1 where id=4 and 1=0
в последнем должна появится ошибка
Если ошибка есть (страница изменилась) то используй подзапросы которые тебе выше дал Scipio
например при таком
select 1 where id=4 and substr((select 'xxxxxxx'),1,1)='x' - появится страница без ошибки
select 1 where id=4 and substr((select 'xxxxxxx'),1,1)='a' - должна быть ошибка
Ну а если при select 1 where id=4 and 1=0 гурзится та же страница что и при правильном запросе, то имхо инжекция бесполезна

ShAnKaR
22.11.2007, 08:26
ну в общем то Scipio правильно тебе посоветовал с подзапросами
Попробуй выполнить
select 1 where id=4 and 1=1
select 1 where id=4 and 1=0
в последнем должна появится ошибка

да не правильно на самом деле посоветовал , когда это у тебя такие запросы приводили к ошибке?

blackybr
22.11.2007, 11:56
если честно только после последних двух постов понял что ты имеешь ввиду)) .. по аналогии с мускулом в http://torrent.2x4.ru/rss.php?passkey=[sql]

в случае неправильного синтаксиса выдает ошибку, в случае неправильного и правильного запроса пустой экран.. так и не додумался как заюзать

запрос там select count(*) from users where table = $passkey

guest3297
22.11.2007, 13:01
Я писал в статье котрая в моа все методы провидения без вывода по отстуку сервера.

ShAnKaR
22.11.2007, 16:45
']Я писал в статье котрая в моа все методы провидения без вывода по отстуку сервера.
ну из того что ты писал может помочь лишь метод аля бенчмарк , и возможно фишка с ROWSET но под второй способ придется мне лепить клиент серверного монстра который будет посылать запросы и паралельно слушать порт.
так что видимо придется мне на бенчмарке остановится, раз вариантов больше нет (

ShAnKaR
23.11.2007, 00:39
а вобще походу и openrowset не прокатит так как:

Функция OPENROWSET может быть использована для доступа к удаленным данным из источников OLE DB только в том случае, если для заданного поставщика параметр реестра DisallowAdhocAccess явно установлен в 0 и включен параметр Ad Hoc Distributed Queries расширенной настройки. Если эти параметры не установлены, политика по умолчанию запрещает нерегламентированный доступ.

так что бенчмарк и остается только .