Использование eval () и base64_decode () для обфускации кода - не работает внутри функции? - PullRequest
0 голосов
/ 04 ноября 2011

Короче говоря, я создаю приложение для самостоятельного размещения, и для создания средства сдерживания базового уровня, которое не позволит тем, кто обладает небольшими знаниями в области разработки (например, мой целевой рынок), удалять обратные вызовы, я решил используйте eval() и base64_decode() для того, чтобы запутать и выполнить несколько строк кода - особенно те, которые имеют дело с проверкой лицензионного ключа пользователя.

Проблема, с которой я столкнулся, заключается в том, что мне кажется, что я не могу запустить eval(base64_decode(..)); внутри функции.

Например, это прекрасно работает:

eval(base64_decode('c2Vzc2lvbl9uYW1lKCJfaW5zdCIpOyBzZXNzaW9uX3N0YXJ0KCk7ICRfU0VTU0lPTlsna2V5J10gPSB0cnVlOyBlY2hvICI8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj53aW5kb3cubG9jYXRpb24gPSAnL2luc3QvYWRtaW4vc2V0dGluZ3MnPC9zY3JpcHQ+Ijs=');

выполняет следующее,

session_name("_inst");
session_start();
$_SESSION['key'] = true;
echo "<script type=\"text/javascript\">window.location = '/inst/admin/settings'</script>";

Но это, с другой стороны, не удается:

function escapeOut() {
eval(base64_decode('c2Vzc2lvbl9uYW1lKCJfaW5zdCIpOyBzZXNzaW9uX3N0YXJ0KCk7ICRfU0VTU0lPTlsna2V5J10gPSB0cnVlOyAkZXNjYXBlID0gICI8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj53aW5kb3cubG9jYXRpb24gPSAnL2luc3QvYWRtaW4vc2V0dGluZ3MnPC9zY3JpcHQ+IjsgcmV0dXJuICRlc2NhcGU7'));
}

echo escapeOut();

должно выполнить следующее,

session_name("_inst");
session_start();
$_SESSION['key'] = true;
$escape = "<script type=\"text/javascript\">window.location = '/inst/admin/settings'</script>";
return $escape;

Сначала я не возвращал $escape, но после осознания и устранения этой проблемы я в тупике. Это, наверное, что-то довольно простое, но я довольно озадачен.

Будем весьма благодарны за любые ответы о том, почему это не работает / что я могу сделать, чтобы это работало!

1 Ответ

2 голосов
/ 04 ноября 2011

с return в вашем операторе eval() вернет из eval, а не из внешней функции.

Я думаю, тебе нужно что-то вроде этого:

function escapeOut(){
    return eval(base64_decode('c2Vzc2lvbl9uYW1lKCJfaW5zdCIpOyBzZXNzaW9uX3N0YXJ0KCk7ICRfU0VTU0lPTlsna2V5J10gPSB0cnVlOyAkZXNjYXBlID0gICI8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj53aW5kb3cubG9jYXRpb24gPSAnL2luc3QvYWRtaW4vc2V0dGluZ3MnPC9zY3JpcHQ+IjsgcmV0dXJuICRlc2NhcGU7'));
}

echo escapeOut();

также имейте в виду, что это тривиально для echo base64_decode('c2Vzc2lvbl9uYW1lKCJfaW5zdCIp...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...