2014-09-24 3 views
1

Я ищу, чтобы отделить эту конкретную строку от строки 1 около 16 000+ файлов.Удаление инъекции с использованием регулярного выражения

Начало инъекции:

<?php if(!isset($GLOBALS` 

Middle of the injection is: 
`7860msvd` 

And end of the injection is: 
`oqggbrtstz-1; ?> 

Это содержание в 1 строке только (первого)

Не знаете, как это сделать, но то, что я здесь является следующее;

sed -i -e '1 s/.*<\?php if\(\!isset\(\$GLOBALS\.*7860msvd.*oqggbrtstz-1; ?>//g'

error: sed: -e expression #1, char 67: Unmatched (or \(

Любая помощь будет удивительным.

+0

может быть несколько инъекций в одном файле? могут быть здесь части, которые необходимы без, например, середина или конец? – jm666

+0

Это 1 линия или (как кажется, кажется, образец) несколько строк в виде рисунка? – NeronLeVelu

ответ

1

Вы не хватает буквальному какой-то особый характер, как ? и использование -r получить ожидаем результат коррекции

sed -ri '1 s/.*<\?php if\(\!isset\(\$GLOBALS.*7860msvd.*oqggbrtstz-1; \?>//g' File 

    -r, --regexp-extended 

      use extended regular expressions in the script. 
+0

Это сработало блестяще !! Спасибо огромное! – Scivic

+0

@ Scivic, Добро пожаловать. Вы можете принять его, чтобы я получил зеленый галочку. – Kalanidhi

+0

Как он может работать на многострочном массиве здесь sed принимает только по одной строке за раз? Пример показывает несколько строк между '. * <\? Php' и '; ?> 'и никакой новой загрузки строки/буфера. – NeronLeVelu

0

синтаксис команды

sed -i -e '1 s/.*<\?php if(\!isset(\$GLOBALS\.*7860msvd.*oqggbrtstz-1; \?>//g' 

нет необходимости бежать(), когда нет обратной ссылки и пропавших без вести сбежать?

1

@josifoski является правильным, не избегайте скобок. Незначительные исправления в свой ответ, чтобы избежать вырезают кода перед тем инъекции:

sed -i -e '1 s/<\?php if(\!isset(\$GLOBALS.*7860msvd.*oqggbrtstz-1; \?>//g'

+0

Независимо от того, следует ли экранировать экраны, зависит от диалекта 'sed'. – tripleee

1

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

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

Смежные вопросы