在PHP中传递HEX值使用GET方法

时间:2013-07-27 03:38:56

标签: php

如果我在 index.php

中有一些代码
if ($_GET['x']==="\x01\x03\x03\x07")
{
    echo 'OK';
}

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

2 个答案:

答案 0 :(得分:0)

所以,url必须是这样的:

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

你的$ _GET必须是这样的:

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

它将返回“OK”

要将'\ x01 \ x03 \ x03 \ x07'(十六进制值)与您在网址中发送的变量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

答案 1 :(得分:0)

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

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

您可以引用HTML网址编码here

P / s:我觉得你在玩ctf.wargamevn.vn;))