攻防世界-MISC-新手练习区-base64stego

admin 2022年11月11日15:05:13评论28 views字数 822阅读2分44秒阅读模式

题目

菜狗经过几天的学习,终于发现了如来十三掌最后一步的精髓

攻防世界-MISC-新手练习区-base64stego攻防世界-MISC-新手练习区-base64stego

解题

下载附件后是一个压缩包,解压缩时提示需要密码,这时候就要思考了,破解密码?在题目中一般都会提示,不然破个吉尔。然后想到伪加密,先用winRAR修复下,果然修复后的能直接解压(据说用360压缩可以直接脱出里面的文本)

攻防世界-MISC-新手练习区-base64stego攻防世界-MISC-新手练习区-base64stego

解压后得到一个文本,里面是大量base64加密(根据题目名字也可以知道)

攻防世界-MISC-新手练习区-base64stego攻防世界-MISC-新手练习区-base64stego

这是base64隐写,下面是我的解题代码

b="""
这里放base64加密的内容
"""
e = d.splitlines()
binstr = ""
base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
for i in e:
    if i.find("==") > 0:
        temp = bin((base64.find(i[-3]) & 15))[2:]  # 取倒数第3个字符,在base64找到对应的索引数(就是编码数),取低4位,再转换为二进制字符
        binstr = binstr + "0" * (4 - len(temp)) + temp  # 二进制字符补高位0后,连接字符到binstr
    elif i.find("=") > 0:
        temp = bin((base64.find(i[-2]) & 3))[2:]  # 取倒数第2个字符,在base64找到对应的索引数(就是编码数),取低2位,再转换为二进制字符
        binstr = binstr + "0" * (2 - len(temp)) + temp  # 二进制字符补高位0后,连接字符到binstr
str = ""
for i in range(0, len(binstr), 8):
    str = str + chr(int(binstr[i:i + 8], 2))  # 从左到右,每取8位转换为ascii字符,连接字符到字符串
print(str)  # 结果是 Base_sixty_four_point_five转换为

运行后得到flag

攻防世界-MISC-新手练习区-base64stego攻防世界-MISC-新手练习区-base64stego

知识点

1.ZIP伪加密

2.base64隐写

FROM:无垠の安全

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年11月11日15:05:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   攻防世界-MISC-新手练习区-base64stegohttps://cn-sec.com/archives/1404407.html

发表评论

匿名网友 填写信息