0

如果我在index.php中有一些代码

if ($_GET['x']==="\x01\x03\x03\x07")
{
    echo 'OK';
}

那么,我如何在 url index.php?x= 中传递值 x 获得输出“OK”。谢谢!

4

2 回答 2

0

所以,url必须是这样的:

... index.php?x=\x01\x03\x03\x07

你的 $_GET 必须是这样的:

$_GET['x'] = "\\x01\\x03\\x03\\x07";

它将返回“确定”

要将 '\x01\x03\x03\x07'(hex value) 与您在 url 中发送的变量 x 进行比较,首先您必须更改'\x01\x03\x03\x07''\\x01\\x03\\x03\\x07'. 为什么 ?因为如果您不将“\”加倍,您将无法比较这些。

因此,您必须将十六进制放在这样的变量中:

$hex = "\x01\x03\x03\x07";

并且您会将“x”与已编辑的 $hex(值为“ \\x01\\x03\\x03\\x07”)进行比较。要制作编辑/固定的 $hex,我们必须使用函数 str_ireplace()。

这是示例:

$hex = "\x01\x03\x03\x07";
$hex_able_to_compare  = "\\x01\\x03\\x03\\x07";
$fixed = str_ireplace($hex,$hex_able_to_compare,$hex);
if ($_GET['x'] == $fixed){
echo "OK!";
}
else {
echo "Not OK!";
}

因此,您仍然可以将您的十六进制与将您的十六进制设置为$hex变量进行比较。
但问题是:如果十六进制值是动态的怎么办?我们也应该将值$hex_able_to_compare设为动态。:D

于 2013-07-27T03:50:35.747 回答
0

要在 URL 中传递十六进制值,您需要在十六进制代码之前使用字符“%”。例如,%20 代表空格字符。所以你需要的网址是:

index.php/x=%01%03%03%07

您可以在此处参考 HTML URL Encode

P/s:我认为你在玩 ctf.wargamevn.vn ;))

于 2013-07-29T02:16:58.943 回答