blackicelisa

主函数输入的字符会和key比较长度和enflag比较内容,所以这道题的flag和输入有关

 

 key长度为0x12,enflag的值为:izwhroz""w"v.K".Ni

 

 

 

 对输入进行加密的函数,首先比较输入长度是否为0x12,然后以三个数字为一组,每组为一个循环,进行加密。

 

 正确的输入经过加密等于enflag,所以对enflag的值进行逆向计算可以得到正确的输入(flag),代码如下

key=[]
s="izwhroz\"\"w\"v.K\".Ni"
for i in s:
          key.append(i)
print("key:",key)
#key.reverse()
flag=''

for j in range(0,18,3):
          flag += chr((ord(key[j])^18)-6)

          flag += chr((ord(key[j+1])^18)+6)

          flag += chr(ord(key[j+2])^18^6)
          print(key[j])


print(flag)

有一个坑是+号的优先级大于^,在第一次运算没有给ord(key[j])^18这样的^运算加上小括号得到了错误结果,纠结了很久那里写错了。

相关文章:

  • 2021-04-01
  • 2021-05-25
  • 2021-09-16
  • 2021-06-05
  • 2021-05-12
  • 2021-11-02
  • 2021-11-12
  • 2021-11-05
猜你喜欢
  • 2021-08-14
  • 2021-04-10
  • 2021-11-23
  • 2020-05-07
  • 2021-05-17
  • 2021-05-24
  • 2021-08-02
相关资源
相似解决方案