Что NV32ts и его Атака с использованием кода на SQL пытаются сделать?

Это найдет первое вхождение, которое соответствует одному из значений в списке, приведенном в вопросе.

select
    Column1,
    Column2,
    Column3,
    regexp_substr(Column1, 'CDE|ACE|GATE|HUB') AS NewColumn
from
    your_table;

РЕДАКТИРОВАТЬ: Для размещения @TimBiegeleisen

select
    Column1,
    Column2,
    Column3,
    regexp_substr(
        Column1,
        (SELECT LIST_AGG(item, '|') FROM table_of_codes)
    ) AS NewColumn
from
    your_table;

Или ...

select
    your_table.Column1,
    your_table.Column2,
    your_table.Column3,
    table_of_codes.item
from
    your_table
inner join
    table_of_codes
        on yourTable.col3 LIKE '%' + table_of_codes.item + '%'
;

Или много таких вариаций.

(где таблица table_of_codes содержит одну строку на код, который вы ищете.)

5
задан Nathan 12 January 2009 в 20:16
поделиться

3 ответа

Я считал эти два пути, но я не на 100% уверен который:

  1. В этой точке они просто ловят рыбу. Сценарий ищет веб-сайты, которые имеют и открытые инжекционные уязвимости и доступ к sysobjects таблице в SQL-сервере. В той таблице будут приводиться список всех таблиц и столбцы (и их типы) в базе данных. Если страница на самом деле возвратит результат вместо того, чтобы бросить ошибку, то сценарий зарегистрирует это для будущего более подробного нападения. Вы в конечном счете закончите со злонамеренным кодом JavaScript, добавленным к каждому тексту (varchar, nvarchar, символ, nchar, текст) столбец каждой строки каждой таблицы во всем дб. Я думаю, что это - более вероятная опция.
  2. Это создает выражение, которое будет всегда возвращать true, возможно, позволение их обходит Вашу систему аутентификации. Это кажется менее вероятным, потому что sysobjects ссылка делает его напрасно сложным. Также: они использовали And вместо Or.
5
ответ дан 13 December 2019 в 22:18
поделиться

Я верю тому, что они пытаются изобразить, здесь то, если Ваше приложение уязвимо для Внедрения SQL.

Символ (124) переводит в | символ, который вынуждает целый результат запроса рассматриваться как результат запроса с двумя присоединенными каналами. Таким образом, Вы заканчиваете с количеством таблиц в Вашей базе данных с двумя присоединенными каналами (напр. |1428 |). Который по сравнению с 0 в> 0 причин ошибка, потому что |1428 | не интервал.

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

Много попыток Внедрения SQL действительно предназначено, чтобы заставить Ваше приложение перестать работать, чтобы знать, что Вы уязвимы. Если Вы действительно обрабатываете ошибки хорошо, они могут затем попытаться ослепить SQL, вводят Вас.

Проверьте это для наблюдения этого подробно.

Я надеюсь, что Вы не уязвимы, и если Вы удачи!

5
ответ дан 13 December 2019 в 22:18
поделиться

Буквально вчера я написал perl-скрипт, чтобы сделать именно это. Сценарий возвращает список модулей Perl, установленных в @INC, используя символ '::' в качестве разделителя. Вызовите сценарий, используя -

perl perlmod.pl

ИЛИ

perl perlmod.pl <module name> #Case-insensitive(eg. perl perlmod.pl ftp)

. На данный момент сценарий пропускает текущий каталог ('.'), Так как у меня были проблемы с рекурсивными софт-ссылками, но вы можете включить его, изменив функцию grep в строке 17 с

  grep { $_ !~ '^\.$' } @INC

to just,

@INC

Скрипт можно найти здесь. Вы можете скачать его здесь :

0
ответ дан 13 December 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: