PHP-如何让pack()返回与常规字符串相同的字符串



我不确定问题是什么。我认为这是编码问题。我想要的是

pack('V', 0x41) == "A"

返回true。即使来自mb_detect_encoding((的编码为两者返回ASCII;A";当被回音时,显示在屏幕上。真正的问题是,当压缩字符串包含在sql查询中时:

$sql = "SELECT item_name, item_description FROM items WHERE item_name LIKE '$querystr%'";

它无法执行查询,即使打印到屏幕上时字符串是等效的。这是针对我正在创建的CTF挑战,所以是的,该代码容易被注入。

pack中的V参数采用32位无符号值(小端字节顺序(,因此您的调用看起来像

pack('V', 0x00000041) === "A"

您可以使用trim来消除多余的null,也可以使用另一个选项,例如c

pack('c', 0x41) === "A"

最新更新