如果我在index.php中有一些代码
if ($_GET['x']==="\x01\x03\x03\x07")
{
echo 'OK';
}
那么,我如何在 url index.php?x= 中传递值 x ?获得输出“OK”。谢谢!
如果我在index.php中有一些代码
if ($_GET['x']==="\x01\x03\x03\x07")
{
echo 'OK';
}
那么,我如何在 url index.php?x= 中传递值 x ?获得输出“OK”。谢谢!
所以,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
要在 URL 中传递十六进制值,您需要在十六进制代码之前使用字符“%”。例如,%20 代表空格字符。所以你需要的网址是:
index.php/x=%01%03%03%07
您可以在此处参考 HTML URL Encode
P/s:我认为你在玩 ctf.wargamevn.vn ;))