2014-01-29 4 views
0

Итак, я изучаю некоторую защиту PHP, используя DVWA (http://www.dvwa.co.uk/). Сейчас я нахожусь в упражнении, когда автор пытается научить нас выполнять команды в уязвимых приложениях. На этом уровне, it adds a very simple blacklist which removes important characters:Обход PHP str_replace() при замене одного символа

$substitutions = array(
     '&&' => '', 
     ';' => '', 
    ); 

я, очевидно, можно использовать некоторые другие символы еще получить код исполняется (как |, ||, & и т.д.), но я хотел бы знать, как я обойти замещение один символ «;». Я видел несколько примеров, по которым дураки заменяют кодом типа «<scr<script>ipt>», и я пробовал такие вещи, как «;;;»; пытался кодировать в hex и base64, но это не сработало.

Есть ли способ уклониться от str_replace(), когда он ищет единственного персонажа? Это PHP 5.5.3.

+0

Вы можете заменить regex? –

+0

Что вы делаете с входящей строкой? Почему вы используете 'str_replace'? Большинство функций имеют свою собственную функцию «выхода», которую вы должны использовать. (например, 'mysql_real_escape_string' и' escapeshellcmd') –

+0

Что вы подразумеваете под «уклоняться от замещения»? Что это значит? Какие примеры вы видели? –

ответ

0

Я не уверен, почему автор показывает, как использовать черный список, его слишком легко подорвать, возможно, эта идея измельчается в дальнейшем. http://en.wikipedia.org/wiki/Secure_input_and_output_handling

Хотя пример вы ссылаетесь на это «средний» уровень, даже «труднее» уровень не использует ПГПС фильтр FILTER_VALIDATE_IP

Даже REGEX бы сделать лучшую работу. См. На полпути вниз страницы: http://www.regular-expressions.info/examples.html

Если вы пытаетесь защитить от атак XSS (вы упоминаете искусственный тег скрипта), то белым списком является путь. Подтвердите, что вы ожидаете получить или прервите.

EDIT

Хммм .. теперь я вижу, сайт называется Damned уязвимый Web App, возможно, идея заключается в том, чтобы научить вас все плохие примеры ...

+0

Действительно, это показывает мне неправильные методы кодирования.Я смог уклониться от защиты с помощью других символов, которых нет в списке, и я понял, как уклоняться и обманывать str_replace, используя строки, такие как « ipt>», чтобы сформировать один тег «

0

Я нашел этот page быть когда я это делал. Оказывается, есть и другие операторы, которые могут использоваться иначе, чем ';' для подключения вашей собственной команды!

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

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