2012-03-07 2 views
0

내 사이트가 해킹 당하고 있습니다. 그것은 내 모든 PHP 파일의 첫 번째 줄에 내 파일에 일부 스크립트를 추가합니다. Netbeans 검색을 사용하여 해당 스크립트를 제거하고 REGEX 옵션으로 바꾸고 싶습니다.해킹 된 스크립트를 치료하기 위해 REGEX 도움말이 필요합니다.

이 해킹 스크립트 같은 그 위에 패턴

<?php /**/ eval(base64_decode("[SomeRandomString]"])); ?> 

당신이 나에게 위의 문자열을 제거하는 정규식 패턴을주지하시기 바랍니다 수를 것 같다? 여기

내 해킹 전체 스크립트의 예입니다 http://ideone.com/6ltMf

답변

3

이런 식으로 뭔가는 간단한 예제와 일치하고 붙여 넣은 하나

$pattern = '~^\<\?php\s?\/\*\*\/\seval\(base64\_decode\(\".*?\)\)\;\s?\?\>~' 
// You might need to incorporate the multi-line option at the end of the pattern 

돌이켜은 20/20입니다 : 앞으로 고려해야 할 버전 관리 시스템을 사용하여 변경된 모든 파일을 신속하게 재설정합니다.

+0

문자열의 처음과 끝에'~'의 의미를 설명 할 수 있습니까? – GusDeCooL

+1

'~'PHP의 정규식 엔진에 필요한 패턴 구분 기호입니다. 패턴의 시작과 끝을 나타냅니다. 캐릭터 자체는 임의적입니다. 많은 사람들이'/'를 사용합니다 (PHP는'preg_match()'의 예제에서'/'를 사용합니다). 필자는 가독성을 돕기 위해 패턴에 존재하지 않는 문자를 선호합니다 (정규식 패턴은 읽을 수있는 희망이있는 것처럼 말입니다 : p). –

+0

'~'char을 테스트하고 시도해 보았습니다. char가 php에서만 작동한다는 것을 몰랐습니다.하지만 여기서는 Netbeans를 사용하여 feature를 대체합니다. 매력처럼 작동하십시오. 고맙습니다. : D – GusDeCooL

0

왜 수동으로 제거하지 않는가? 그렇게 할 파일이 너무 많으면 자동화가 좋게 들립니다. 문자열을 디코딩하고 PHP 표현식으로 평가하기 때문에 실제로 자체를 자동화하는 경우 모든 파일에서 동일해야합니다. 정확하게 문자열을 복사하고 모든 .php 파일에서 정확한 문자열을 찾도록 스크립트에 지시하십시오. 나는 특수 문자는

"eval(base64_decode("aWYoZnVuY3Rpb25fZXhpc3RzKCdvYl9zdGFydC.......));" 

같은 것을 믿습니다 :. \^$ | * +() 당신이 그들을 검색 할 경우, 당신은 순서대로 "\"에 대한 그들 앞에해야합니까? 당신의 RE가가되도록 일치가 제대로 작동하려면 다음 문자열이 더 이상 특수 문자를 포함하지 않는 것을 확인할 필요 해요

"eval\(base64_decode\("aWYoZnVuY3Rpb25fZXhpc3RzKCdvYl9zdGFydC.......\)\);" 

. 또한이 바이러스가 무엇을하는지에 따라 PHP 버전을 다시 설치하기를 원할 수도 있습니다.하지만 "eval base64_decode"라는 google을 사용해야합니다. 그게 내가 바이러스에 관한 포럼 게시물을 찾은 이유입니다.

관련 문제