从字符串找到%100s,发现下面有个yes
跟踪yes
、
yes之前有个jmp
看上面的代码,要想跳转到含有yes这一块,需要r13等于r12
xor r13,r13说明r13是0,但是找不到r12的操作代码
实际着这个关键的操作r12的加密逻辑,是藏在异常处理机制的栈展开过程中的dwarf字节码
使用这个命令得到ELF文件的信息
找到这段dwarf字节码
结合官方文档理解意思https://dwarfstd.org/doc/DWARF5.pdf
r15 = (8722213363631027234 ^ 1890878197237214971) - 9123704
r14 = (2451795628338718684 ^ 1098791727398412397) - 1512312
r13 = (8502251781212277489 ^ 1209847170981118947) - 8971237
r12 = (2616514329260088143 ^ 1237891274917891239) - 1892739
data = "65363039656662352d653730652d346539342d616336392d6163333164393663"
flag = ""
for i in range(0, len(data), 2):
byte = bytes.fromhex(data[i:i + 2])
flag += byte.decode("utf-8")
flag="flag{" + flag+ "3861}"
print(flag)