题目:这段python代码似乎有些问题,修改代码让它返回正确的flag
from binascii import unhexlify as u def get_flag(): flag = '666c61677b30682d6c6f6f6b2d612d466c61477d' return u(flag).decode('utf-8') print(f'The flag is: ')
**************************************************************************************************************
解题关键:十六进制转ASCII
解题思路:
1. 题目中已经给出flag的十六进制字符串
2. 使用python中的binascii库的unhexlify(去十六进制化),用utf-8标准解码
3. 将十六进制字符转换为ASCII字符, 得到flag
import binascii
hex_string = '666c61677b30682d6c6f6f6b2d612d466c61477d'
ascii_string = binascii.unhexlify(hex_string).decode('utf-8')
print(f'The flag is: {ascii_string}')
运行后得到结果:
The flag is: flag{0h-look-a-FlaG}
**************************************************************************************************************
简易解法:
这里推荐一个工具集CyberChef , 可以实现各种类型的数据转换、密码解析等功能,也可以在CyberChef侧边栏搜索magic方法, 自动进行文本识别与可能的数据转换。