помогите разобраться с PHP-шной строкой

valyala

Новичок
помогите разобраться с PHP-шной строкой

Нижеприведенная строчка выводит phpinfo. Помогите разобраться, как это она делает.
Код:
<?="{${/*'."_r${$e}p\x6${${"*/(!$a='?'^($e='?'^'^')^';')?':'.'^':(${":$)"}=('n'?'+-'^'[_':'').(':'^'_').'g'."_r${$e}p\x6c".${$a}.(0?"^":')?'^'JZ'))?(${':$)'}('/'.${":$)"}."/e",'"1".'.${${'^'^';'}}."v{${${${"\x65"}}}}l('".'(${""}="phpinfo")+${""}();\')',${':$)'})?'':"_r${$e}p\x6c"):'}('}}";?>
 

jer

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

а вообще зачем это тебе надо? спортивный интерес?
 

SelenIT

IT-лунатик :)
сокращенный оператор вывода в самом начале тут лишний, из-за него появляется строка "phpinfo" внизу.

все, что между /* */ - как обычно, комментарий :)

весь скрипт построен на вложенных "(условие) ? выражение : другое выражение", некоторые ветви никогда не выполняются, в условиях присваиваются значения переменных.

буквы a и e хитро замаскированы через переменные $e и $a, еще неск-ко букв выражаются через побитовое XOR левых символов.

в итоге строка приводится к виду
PHP:
preg_replace ('/' . preg_replace . "/e", '"1".' . "eval('phpinfo();')", preg_replace)
valyala, спасибо за шикарный ребус! Если не секрет, где ты его нашел? И не лень же кому-то было это все "шифровать"...
 

valyala

Новичок
SelenIT, быстро же ты раскусил этот ребус... В следующий раз придумаю что-нибудь посложнее :)
valyala, спасибо за шикарный ребус! Если не секрет, где ты его нашел? И не лень же кому-то было это все "шифровать"...
Вначале было интересно, но под конец надоело все это "шифровать" и я просто начал заниматься cut & paste :) Можно было все намного больше усложнить и замаскировать под код PHP. Например,
Код:
"${/*";
echo 'hello, world';
"*/продолжение "шифрованного" кода // }"; // снова коммент
продолжение кода}";
ну и т.д. в том же духе :)
 

fixxxer

К.О.
Партнер клуба
strtr еще хорошая функция для таких заморочек
 
Сверху