Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #65, МАЙ 2004 г.

Картофель фри

Федор Михайлович

Xakep, номер #065, стр. 065-074-2


Копаем глубже

Чтобы двигаться дальше, нужно понять смысл этой ошибки. После того как скрипт получил мой параметр с кавычкой в конце, он подставил его без каких-либо проверок и модификаций в sql-запрос к MSSQL-серверу. Поскольку в select-запросах параметры выборки берутся в одинарные кавычки, если один из них сам по себе содержит символ ‘, возникает ошибка, ведь выполняемый sql-запрос не является корректным. Первое, что пришло в голову при таком раскладе – закомментировать весь текст запроса, следующий за нашим параметром с кавычкой, чтобы запрос можно было выполнить. Почитав документы по MSSQL, я вспомнил, что комментарии здесь начинаются с последовательности “—-“. Отлично, пускаю: ProductCode=1234’--. Как и ожидалось, скрипт выполняется и отлично работает. Супер, а теперь попробуем выполнить свой собственный запрос через эту дырку: ProductCode=1234’; select * from lala; --. Скрипт выполняется, но непонятно, проглотил ли он мой запрос. Для этого я специально допущу ошибку, поменяв предложение “select” на “bebe”. Скрипт ругается: “Incorrect syntax near 'BEBE'.”. Отлично, он глотает и пытается выполнить запрос. Теперь можно сколько угодно модифицировать данные, можно снести им все таблицы или сразу текущую базу данных. Есть только одна серьезная проблема - мы пока не знаем названия ни одной таблицы и ни одного поля. Вернее, что-то можно угадать (ну, например, логично, что таблица с товарами может называться “Products” и т.д.), но это не наши методы, мы, хакеры, любим точность :). Кроме того, мы пока не научились извлекать сведения из таблиц, а это, напомню, и есть наша первоочередная задача.

Назад на стр. 065-074-1  Содержание  Вперед на стр. 065-074-3