halo【攻防世界】Misc

这是一个傻逼的解题记录

初学自己摸索的菜鸟,欢迎大佬指正(磕头)


 

题目:

 下载打开:

一时间也没啥头绪,丢到CyberChef里面看看

只有base64解码出非乱码字符串

 

igq4;441R;1ikR51ibOOp

 

解题经验太浅,一时也没有能把igg4与flag联系起来的方法

卡题了,去找了wp看看

原来是要进行【异或】操作——醍醐灌顶,以前有做过涉及异或的题目,多是在python代码中看到,原来还可以这样

 


 

有大佬直接丢到解题网站里

异或运算加密/解密 - 一个工具箱 - 好用的在线工具都在这里! (atoolbox.net)

一个个试,也不需要很久

 

官方wp

直接base64解码+异或(从0试到200),几乎列出所有结果

import string
 
from base64 import *
 
b=b64decode("aWdxNDs1NDFSOzFpa1I1MWliT08w")
 
data=list(b)
 
 
for k in range(0,200):
    
    key=""
 
    for i in range(len(data)):
 
        key+=chr(ord(data[i])^k)
 
    print (key)

 

这里,我的电脑运行会报错:

 TypeError: ord() expected string of length 1, but int found

参考:python3遇到的"ord() expected string of length 1, but int found"问题-CSDN博客

在python3下运行会出错而python2不会,原因是因为ord()这个函数接受的类型是一个长度为1的字符串,而在python3当中传入的i已经是一个整型数了

修改后可以在python3下运行的代码:

from base64 import b64decode

# 这里填写需要解码的字符串
encoded_string = "aWdxNDs1NDFSOzFpa1I1MWliT08w"
decoded_bytes = b64decode(encoded_string)
data = list(decoded_bytes)

for k in range(0, 200):
    key = ""

    for i in range(len(data)):
        key += chr(data[i] ^ k)

    print(key)

 

运行后,在一堆结果中找到唯一没有乱码或者其他符号的字符串,在前面挺好找的

 

最后得出flag:

flag{jdr78672Q82jhQ62jaLL3}

 

posted @ 2024-03-09 15:23  demo41  阅读(46)  评论(0编辑  收藏  举报