在CTF脚本中,我将十六进制格式的地址分配给随后要解释的变量,例如:
mysql> SHOW VARIABLES LIKE 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin2 | <--
| character_set_connection | latin2 | <--
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | latin2 | <--
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
我写了一个增加该地址的循环,将其转换回字符串后,格式全部搞砸了。
问题是,我有一个字符串,如address = '\xc4\x32\xff\ff'
,我需要对它的解释与以前的地址相同。因此,我四处搜寻并进行了一些测试。由于前导\ x字符,打印变量会将文本转换为十六进制:
c432ffff
所以,我认为我需要将我的字符串转换为十六进制以产生相同的输出。搜索之后,我认为答案是“ binascii”,我尝试了一下,但输出显然不一样:
print '\xc4\x32\xff\ff'
Result is: �2�
f
我认为我的措词可能有误,这就是为什么我的Google搜索没有结果的原因。有谁知道需要对字符串(c432 ...)执行什么才能使其与十六进制字符串解释相同?