Ошибка с запросом SQLite, что мне не хватает? - PullRequest
0 голосов
/ 13 апреля 2019

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

Ошибка в sqlite-запросе: update users set last_browser= 'mozilla' + select sql from sqlite_master'', last_time= '13-04-2019' where id = '14'

отредактировано для ясности:

Я пытаюсь бросить вызов CTF, и я совершенно новичок в такого рода вещах, поэтому я учусь на ходу. Существует страница входа с тестовыми учетными данными, которые мы можем использовать для получения многих флагов. Я получил большинство флагов, и это последний из оставшихся.

После того, как я войду в веб-приложение с предоставленными учетными данными, появятся следующие сообщения: эта ссылка

Вопрос для флага: «Какое значение скрыто в секрете таблицы базы данных?»

Итак, из предыдущего изображения я попытался использовать SQL-инъекцию для получения значения. Это делается с помощью пакета burp и попытки внедрения через пользовательский агент. Я пытался использовать много вариантов попытки инъекции, показанной выше. Я изо всех сил пытаюсь выяснить, где я иду не так, тем более что вторая одинарная кавычка добавляется автоматически в запрос. Я просмотрел документацию по sqlite и примеры внедрения SQL, но я не могу понять, что я делаю неправильно или как заставить это работать.

Ответы [ 2 ]

0 голосов
/ 14 апреля 2019

Спасибо всем за участие, я решил это.

SQL-запрос был настроен так:

update users set last_browser= '$user-agent', last_time= '$current_date' where id = '$id_of_user'

отредактированный пользовательский агент с набором отрыжок:

Mozilla', last_browser=(select sql from sqlite_master where type='table' limit 0,1), last_time='13-04-2019

Повторяется с тем, что найдены все таблицы, столбцы и флаги. Довольно много времени, но не смог найти способ оптимизировать.

0 голосов
/ 13 апреля 2019

Подзапрос, такой как select sql from sqlite_master, должен быть заключен в скобки.

Так вы бы хотели

update user set last_browser= 'mozilla' + (select sql from sqlite_master''), last_time= '13-04-2019' where id = '14';

Хотя я не думаю, что это достигнет того, чего вы хотите, что не ясно. Результаты простого теста: -

enter image description here

Возможно, вы захотите объединить строки, поэтому вместо + используйте ||. например,

update user set last_browser= 'mozilla' || (select sql from sqlite_master''), last_time= '13-04-2019' where id = '14';

В этом случае вы получите что-то вроде: -

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...