如果我在 index.php
中有一些代码if ($_GET['x']==="\x01\x03\x03\x07")
{
echo 'OK';
}
那么,我如何在url index.php?x = ??? 中传递值x以获得输出'OK'。 谢谢!
答案 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;))