===> Toolza1.0 <=== (*Nix/Windows/Mac) - UTF-8 perlscript (
download last version at the end of this post /последнюю версию скачать можно снизу этого поста)
Данная утилита предназначена для тестирования своего веб-ресурса на уязвимости. Любое другое использование скрипта преследуется по закону
Last update - 25.06.2011
SQL injection DB supported:
Mysql, Mssql, Sybase, Postgresql, Access, Oracle, Firebird/Interbase
SQLi supported in:
$_GET
$_POST
Headers(include COOKIE)
include Blind Mysql injection (with
ANY QUERY MODE -
no spaces, no "<" or ">",
for experts 
, and
Blind READ FILES through LOAD_FILE(some_file) and Blind BRUTE LOAD_FILE log/conf files (file_priv = Y)) + alternative methods
Other functions:
- LFI/Reader/Loade_file() bruter
- Scan site for folders & files
- FTP checker
- FTP bruter
- Proxy checker
- Proxy grabber
Post/Get/Proxy/SOCKS4-5/Cookies/Timeout/Multithread/HTTPS+Authorization supported
include video instructions for all modes
Для всех режимов работы:
- Выбор POST или GET
- Поддержка прокси (файл proxy.txt) - авточекинг, работает с первой рабочей
- Поддержка SOCKS4-5 (файл socks.txt) - авточекинг, автоопределение типа носка(4-5), без авторизации, работает с первой рабочей
- Выбор таймаута соединения
- Возможность вставить cookies
формат:
$cookie ="__utma=115146457;__utmz=115146457;PHPSID=201301d f5788f6f187342cdfe45abea0a";
- Возможность изменить user agent
- Возможность изменить реферер
- Возможность выбора HTTP-протокола ( 0 - HTTP/1.0; 1 - HTTP/1.1; Default - 1)
MySql=>5:
1. Многопоточный (можно вручную менять кол-во потоков, оптимально на практике 10)
2. Вывод на монитор + логирование в файл (имя_хоста.txt)
3. Нормальная поддержка UNHEX(HEX(SQL))
4. Нормальная поддержка AES_DECRYPT(AES_ENCRYPT(SQL,aes_key),aes_key)
5. Выбор пробелов (+,/**/,%20 и etc.)
6. Выбор лимитов (no limit; limit+0,1; limit+1,1)
7. Выбор фильтров (/*,--+,# и etc)
8. Выбор паузы между пачкой запросов в секундах (антиддос сканируемого сайта)
9. Предварительный вывод на экран вашего URL со всеми вашими настройками
10. Возможность выбора дампа таблиц из information_schema - все или с "номер_записи" по "номер_записи"
11. Возможность выбора дампа данных из выбранной таблицы - все или с "номер_записи" по "номер_записи"
12. Возможность вставить свое условие при дампе данных из таблицы - where ID=1, чтобы не дампить, ну например,
всех пользователей какого-нибудь форума и сразу получить данные админа. Или админов, т.к. они могут не находится рядом в таблице и алгоритм "с ... по..." тут не подойдет. Поддерживаются как числовые так и mix условия (автоопределение, авто- HEX).
13. Автопроверка на file_priv
14. Скрипт полностью интерактивный, поддерживается ввод данных пользователем с клавиатуры.
MySql4 bruter - таблицы и колонки:
- Многопоточный
- Возможность добавлять префикс для таблиц и префикс для колонок(PHPBB_, IPB_ & etc.)
- Словарь таблиц - 3434
- Словарь колонок - 760
Site scanner for folders & files:
- Многопоточный
- Словарь 3455 позиций
- Возможность редактировать ошибки при ответе сайта на запрос при не существующем URL (файл scaner_errors_list.txt)
- Возможность пополнять словарь (файл scaner_folder_list.txt, новая позиция с новой строки без слеша в начале)
LFI/READER/Load_file() bruter:
Многопоточный, поддержка GET | POST, прокси (не для всех режимов)
6 режимов работы:
[1] LFI/Reader - visual error when wrong query
[2] LFI/Reader - unvisual error when wrong query
[3] Mysql load_file - visual error when wrong query, magic_quotes=OFF
[4] Mysql load_file - unvisual error when wrong query, magic_quotes=OFF
[5] Mysql load_file - visual error when wrong query, magic_quotes=ON
[6] Mysql load_file - unvisual error when wrong query, magic_quotes=ON
2-4-6 режимы к сожалению только GET и без прокси, т.к. там идет получение содержимого страниц и пришлось выбирать - либо многопоточность, либо так.
+
записал видео для новой фичи:
1. LFI, ошибки ВИДНЫ при неправильном запросе (классика)
2. LFI, ошибки НЕ ВИДНЫ при неправильном запросе
3. LOAD_FILE, magic_quotes=on, ошибки НЕ ВИДНЫ при неправильном запросе
т.е. классический вариант и два "фактически безнадежных" с первого взгляда
Blind Mysql injection:
- Многопоточный
- POST/GET/Прокси/Куки и прочее
- Полный цикл - от системной информации до получения значений из таблицы (явки-пароли)
- Брут для Blind MySql4 таблиц и колонок с возможностью добавить свой префикс
- В общем все возможности, что в секции обычных скулей, только чуть подольше подождать
- Normal MODE брута (диапазон 0-255) - неграниченное кол-во записей, универсальный, вывод ошибок необязателен
- Fast MODE брута - (диапазон 0-255) - кол-во записей <= 10, универсальный, вывод ошибок необязателен
- TURBO-MODE брута в режиме дампа "1 запись 1 колонка" (диапазон 0-255) - универсальный, вывод ошибок необязателен
- MD5-TURBO-MODE брута в режиме дампа "1 запись 1 колонка" (диапазон 48-102) - универсальный, вывод ошибок необязателен
[1] Blind System information
[2] Blind inj get DB-names from information_schema.schemata
[3] Blind inj get tables from DB-name
[4]
<<< Blind ANY QUERY >>>
[5] Blind inj get column_name from tables from DB-name
[6] Blind inj get LOAD_FILE (file_priv = Y)
[7] Blind BRUTE LOAD_FILE log/conf files (file_priv = Y)
[8] Blind Get tables from information_schema (current DB)
[9] Blind Get column_name from table (current DB)
[10] Blind Get data from columns
[11] Blind Brute MySql4 for tables & columns
[12] Main menu
предварительно определяется размер файла и есть возможность выбирать, читать весь файл или часть файла (начиная и заканчивая любым байтом), весь процесс чтения виден на мониторе. Видео прилагается.
MySql inj bruter кол-ва колонок:
- Многопоточный
- Post/Get/Cookies/Proxy & etc.
- Метод union+select
- Возможность менять максимальное кол-во колонок - по умолчанию 100
- Возможность менять фильтр
- Возможность менять знак пробела
- Определение правильности запроса по наличию или отсутствию уникального текста на странице
- автоопрделениe limit (без лимита, limit+0,1, limit+1,1)
- определение принтабельной колонки
- Алгоритм работы:
1) сначала прогоняется по 20 колонок без лимита, с limit+0,1, c limit+1,1, затем, если не нашлось кол-во колонок, прогоняется от 21 до максимально выставленного кол-ва колонок (100 - default) также без лимита, с limit+0,1, c limit+1,1
2) после нахождения кол-ва колонок ищется принтабельная колонка также без лимита, с limit+0,1, c limit+1,1
в видео рассмотрен нестандартный случай - правильное кол-во колонок определяется без лимита, принтабельная колонка появляется только с limit+1,1
MySql inj NAME_CONST:
- Многопоточный
- Post/Get/Cookies/Proxy & etc.
- Все те же возможности, что и при обычной скуле +
та же скорость
- просто заменить два раза "version()" на "^" (shift+6), т.е. было:
Код:
*http://site.com/index.php?site=profile&id=1'/**/and/**/1=(SELECT/**/*/**/FROM(SELECT/**/*/**/FROM(SELECT/**/NAME_CONST((version()),14)d)/*/as/**/t/**/JOIN/**/(SELECT/**/NAME_CONST((version()),14)e)b)a)/**/and/**/'1'='1/*
*
стало:
Код:
*http://site.com/index.php?site=profile&id=1'/**/and/**/1=(SELECT/**/*/**/FROM(SELECT/**/*/**/FROM(SELECT/**/NAME_CONST((^),14)d)/*/as/**/t/**/JOIN/**/(SELECT/**/NAME_CONST((^),14)e)b)a)/**/and/**/'1'='1/*
*
Отдельный риспект хотелось бы выразить
Qwazar и
jokester за
эту тему.
PS: Видео прилагается
MySql inj floor(rand()):
- Многопоточный
- Post/Get/Cookies/Proxy & etc.
- Все те же возможности, что и при обычной скуле +
та же скорость
скуля:
Код:
*http://example.com/?id=1+or(1,2)=(select+count(*),concat((select+version()+from+information_schema.tables+limit+0,1),0x3a,floor(rand()*2))+from+information_schema.tables+group+by+2+limit+0,1)--+
*
переменные в скрипте:
Код:
*$f_table = "information_schema.tables"; # *default 'information_schema.tables' if MySQL>=5 and if MySQL<5 - you must brute table_name before and print here
*$f_url = "http://example.com/?id=1+or(1,2)="; # url
*$f_plus = "+"; # %20,%2b & etc.
*$f_filtr = "--+"; # close SQL
*
скуля:
Код:
*http://example.com/?id=(select+1+from+(select+count(*),concat((select+version()+from+information_schema.tables+limit+0,1),0x3a,floor(rand()*2))+from+information_schema.tables+group+by+2+limit+0,1)a)--+
*
переменные в скрипте:
Код:
*$f_table = "information_schema.tables"; # *default 'information_schema.tables' if MySQL>=5 and if MySQL<5 - you must brute table_name before and print here
*$f_url = "http://example.com/?id=(select+1+from+"; # url
*$f_plus = "+"; # %20,%2b & etc.
*$f_filtr = "a)--+"; # close SQL
*
MSSQL inj:
- Многопоточный
- Post/Get/Cookies/Proxy & etc.
- Определение кол-ва колонок и принтабельной колонки не требуется
- авто-CHAR всех данных
Вывод на экран и сохранение в файл. Видео прилагается
PostgreSQL injection:
1. UNION+SELECT method:
- Многопоточный
- Post/Get/Cookies/Proxy & etc.
- Возможность задавать в настройках data type принтабельного поля ("text" - default)
- Авто CHR(data)||
- Остальное все тоже самое, что и в mysql
2. SUBQUERY method:
- Многопоточный
- Post/Get/Cookies/Proxy & etc.
- Возможность задавать в настройках тип конвертации данных для вызова ошибки
- Авто CHR(data)||
- Остальное все тоже самое, что и в mysql
Пример метода UNION+SELECT:
Код:
*http://site.com/index.phtml?pid=7+union+select+null,version(),null--
*
*Настройки в скрипте:
*
*$p_union_select_url = "http://site.com/index.phtml?pid=7+union+select+null,^,null"; # url UNION+SELECT method
*$p_subquery_url = ""; # url SUBQUERY method
*$p_method = 0; # 0 - UNION+SELECT method, 1 - SUBQUERY method
*$p_filtr = "--"; # close SQL
*$p_plus = "+"; # %20,%2b & etc.
*$p_convert = "text"; # convert data type(text,int ... etc.)
*
Пример метода SUBQUERY:
Код:
*http://site.com/index.php?id=1+and+1=cast(select+version()+as+int)
*
*или
*
*http://site.com/index.php?id=1+and+1=version()::int
*
*что тоже самое
*
*Настройки в скрипте:
*
*$p_union_select_url = ""; # url UNION+SELECT method
*$p_subquery_url = "http://site.com/index.php?id=1+and+1="; # url SUBQUERY method
*$p_method = 1; # 0 - UNION+SELECT method, 1 - SUBQUERY method
*$p_filtr = ""; # close SQL
*$p_plus = "+"; # %20,%2b & etc.
*$p_convert = "int"; # convert data type(text,int ... etc.)
*
Вывод на экран и сохранение в файл. Видео прилагается
Sybase SQL injection:
- Пока в один поток (специфика sybase sql inj)
- Post/Get/Cookies/Proxy & etc.
- Не требуется подбор кол-ва колонок и поиск принтабельной
- Возможность задавать тип конвертации данных для вызова ошибки (numeric, integer & etc)
- Авто hex(data)||
- Дампит все БД, все таблицы (плюс ID), все колонки из выбранной таблицы (плюс ID) + данные из таблиц
- Автоопределение типов данных при дампе
1 . UNION SELECT method:
Код:
http://site.com/index.phtml?pid=7+union+select+null,@@version,null
Настройки в скрипте:
$s_union_select_url = "http://site.com/index.phtml?pid=7+union+select+null,^,null"; # url UNION+SELECT method
$s_subquery_url = ""; # url SUBQUERY method
$s_method = 0; # 0 - UNION+SELECT method, 1 - SUBQUERY method
$s_filtr = "--"; # close SQL
$s_plus = "+"; # %20,%2b & etc.
$s_convert = "numeric"; # default type to convert - numeric (for subquery method)
1 . SUBQUERY method:
Код:
http://site.com/index.phtml?pid=-7+or+1=convert(numeric,(select+@@version))--+
Настройки в скрипте:
$s_union_select_url = ""; # url UNION+SELECT method
$s_subquery_url = "http://site.com/index.phtml?pid=-7+or+1="; # url SUBQUERY method
$s_method = 1; # 0 - UNION+SELECT method, 1 - SUBQUERY method
$s_filtr = "--+"; # close SQL
$s_plus = "+"; # %20,%2b & etc.
$s_convert = "numeric"; # default type to convert - numeric (for subquery method)
+ системные данные:
Код:
@@version
user_name()
@@boottime
@@errorlog
@@language
@@servername
db_name()
Вывод на экран и сохранение в файл. Видео прилагается
Ms Access SQL injection:
- POST/GET/Cookie/Proxy & etc.
- Возможности:
1. Определение кол-ва столбцов через order+by (надо указать ошибку, когда кол-во столбцов больше) - multithread
2. Брут имен таблиц - возможно добавлять префикс - tbl,tbl_, site_name & etc (multithread)
3. Брут имен колонок - возможно добавлять префикс - tbl,tbl_, site_name & etc (multithread)
4. Автоопределение принтабельной колонки
5. Дамп данных из таблицы (1 thread - специфика access)
6. Автоопределение типов данных при дампе (независимо от того, дампятся данные из одной колонки или нескольких и независимо от порядка их расстановки, т.е. дампите как обычно - id,name,email...)
Вывод на экран и запись в файл. Видео прилагается
Oracle SQL injection:
- Многопоточный
- POST/GET/Cookie/Proxy & etc.
- Возможность задать тип конвертации для принтабельного поля
- Авто CHR(data)||
- Остальное как в обычной скуле mysql
просто замените принтабельное поле на "^" (shift+6)
Вывод на экран и запись в файл. Видео прилагается
Firebird/Interbase SQL injection:
- Многопоточный
- POST/GET/Cookie/Proxy & etc.
- Возможность задать тип конвертации для выводимых данных
- Авто ascii_char(data)||
Исходная ссылка:
Код:
*http://example.com/image.php?operator=2)+and+1=user--
*
*или
*
*http://example.com/image.php?operator=2)+and+1=cast(user+as+char(777))--
*
В скрипте:
Код:
*$fi_source_sql = "http://example.com/image.php?operator=2)+and+1=";
*$fi_filtr = "--"; # close SQL
*$fi_plus = "+"; # %20,%2b & etc.
*$fi_convert = "char(777)"; # default data type - char(777)
*
Вывод на экран и запись в файл. Видео прилагается
FTP checker:
- Многопоточный (50 потоков checked)
- Сохраняет проверенные ftp в файл
- Поддерживаемые форматы:
1)
ftp://login : pass@host
2)
ftp://login : pass@host : port
каждый с новой строки
- если порт не указан, выставляется дефолтный (можно менять в настроках - по умолчанию 21)
- возможны пробелы между строками(автоопределение)
- возможны любые символы в начале и в конце строки (автоопределение)
FTP bruter:
- Многопоточный (50 потоков checked)
- Три режима работы:
1) Брут login : password (любой делиметр, задается в настройках, по умолчанию ":")
2) Известен логин, брут паролей
3) Известен пароль, брут логинов
п. 3 может пригодиться, если вы желаете проверить найденный Вами пароль от SSH или phpmyadmin или просто от админки - вдруг подойдет и на FTP
В видео рассмотрены все три режима работы, словарь паролей взят из mil-dic.txt (83641 записей)
PS: Не забывайте, на некоторых хостах надо задавать обязательную паузу между попытками входа, например на ftp.narod.ru (5 сек) - выставляется в глобальных настройках скрипта
PROXY checker:
- Многопоточный
- Сохраняет хорошие proxy в файл
- формат ip : port - каждый с новой строки
PROXY grabber:
- Многопоточный
-
Кроме SOCKS4 и SOCKS5
- 16 актуальных сайтов с проксями
- Возможность грабить прокси через POST|GET|cookie и даже через proxy

- Возможность добавлять свои сайты для грабинга (никакого выбора "порт/страна/диапазон ip" - или сразу список или зря потерянное Ваше время, ищите сразу рабочую ссылку со списком проксей)
- Маска простейшая, на абсолютную корректность не проверяется (на то есть таймаут и ваш AI):
/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\:[0-9]+)/g
(пример: 127.0.0.1:8080 )
ибо если не придерживаются стандарта - ну и ну их
Выложена видеодемонстрация:
- грабим прокси
- сразу чекаем на валидность (после того, как обошли и пропарсили все сайты из списка в режиме POST + 10 потоков - хотите больше - эксперементируйте, чем больше таймаут - тем корректней результат, но тем больше вероятность, что прокси фиговая)
-----------------------------------------------------------------
Работа скрипта в любом режиме реализована на сокетах, никаких дополнительных модулей не требуется
PS: какие-то маньяки закачали всё видео по использованию сюда:
https://www.ashiyane.org/forums/showthread.php?t=19185
http://www.youtube.com/watch?v=Kn_Vxh_rlH4
http://www.video.xaknet.ru/upload/files/Zalivka_shella_v_phpmyadmin.rar
and more videos:
http://moemesto.ru/webkraft/file/9447906/4332342343.rar
http://moemesto.ru/webkraft/file/9146113/6.rar <--- switch GET to POST
http://moemesto.ru/webkraft/file/8389510/12.rar
PS: not mine