【发布时间】:2014-01-29 17:29:02
【问题描述】:
所以,我正在使用 DVWA (http://www.dvwa.co.uk/) 研究一些 PHP 安全性。现在我正在进行一个练习,作者试图教我们在易受攻击的应用程序上执行命令。在这个级别,it adds a very simple blacklist which removes important characters:
$substitutions = array(
'&&' => '',
';' => '',
);
我显然可以使用其他一些字符来执行代码(例如|、||、& 等),但我想知道如何避免替换单个字符“ ;"。我已经看到了一些示例,这些示例使用“<scr<script>ipt>”之类的代码来欺骗替换,并且我尝试了“;;;”之类的东西;尝试用 hex 和 base64 等进行编码,但没有成功。
str_replace() 在寻找单个字符时有没有办法避开它?这是 PHP 5.5.3。
【问题讨论】:
-
可以用正则替换吗?
-
你对传入的字符串做了什么?你为什么使用
str_replace?大多数函数都有自己应该使用的“转义”函数。 (例如mysql_real_escape_string和escapeshellcmd) -
“逃避替代”是什么意思?这意味着什么?你见过哪些例子?
-
$str = bin2hex(';'); // ... echo hex2bin($str); -
我不是作者。这是一个应用程序,用于展示开发人员所犯的常见安全错误,并教授如何利用和纠正这些错误。作者用它来展示一些开发人员使用的可能解决方案(将已知的坏东西列入黑名单),并希望我了解如何绕过它 - 告诉我这不是一个好的解决方案。
标签: php security shell str-replace