error_reporting(0);
highlight_file(__FILE__);
if (isset($_POST['code'])) {
$code = $_POST['code'];
if (strlen($code) <= 105){
if (is_string($code)) {
if (!preg_match("/[a-zA-Z0-9@#%^&*:{}\-<\?>\"|`~\\\\]/",$code)){
eval($code);
} else {
echo "Hacked!";
}
} else {
echo "You need to pass in a string";
}
} else {
echo "long?";
}
}
来自bugku ezbypass 怎么做
这段代码存在一个漏洞,是利用了eval()函数执行了用户输入的代码,这意味着一个恶意用户可以在输入框中输入一些危险的代码来绕过此脚本的输入检查并执行他们的代码。因此,可以使用以下方法来绕过此脚本的检查:
下面是一些绕过此脚本检查的例子:
1使用intval()函数来绕过输入检查,可以将其用于代码中的任何数字:
$_POST['code'] = "system('ls /');"; // malicious code
$code = $_POST['code'];
$code = intval($code);
eval($code);
2.使用数组类型绕过输入检查:
$_POST['code'] = "system('ls /');"; // malicious code
$code = $_POST['code'];
$code = array_filter($code);
eval($code);