看雪学院闯关1-10

文章描述了一系列解密挑战,包括摩斯密码、二维码修复、Base64解密、MD5修改、凯撒加密、栅栏密码、逆向工程、隐写术和云影编码等技术的应用,参与者逐步揭示隐藏的flag。
摘要由CSDN通过智能技术生成
第一关

摩斯密码,直接在线解密 得到flag

第二关

第一感觉应该是修复这个二维码

二维码这三个定位角应该是固定的找个正常的二维码替换一下

得到flag

第三关

很显然考察的是加密方式,这里的密码看着像是base64,解密尝试一下

得到flag{b9768a37b47beb2d88e2dboe76a39bb3}

显然思路是正确的。但是直接提交是错误的。一般MD5值是32位由数字“0-9”和字母“a-f”所组成的字符串,里面有一个o,把他去掉无法解密,那么就替换掉

data="b9768a37b47beb2d88e2dboe76a39bb3" part="0123456789abcdef" for i in range(len(part)): replaced_data = data.replace(data[22], part[i]) print(replaced_data)

枚举解密,全都解密不出来,

擦,原理正确的flag就是b9768a37b47beb2d88e2db0e76a39bb3 o替换成0即可

第四关

感觉像是密码 01去替换

呵呵 踩坑了

居然是盲文对照,我咋可能懂啊 真是天马行空

对着表读出来是ikanxue

第五关

下载下来看看

打开发现没什么特殊的,那么思路是什么呢,文件隐写

看到length为1284 很明显隐藏了很多内容

vim打开

是零宽度字符隐写--

Unicode Steganography with Zero-Width Characters在线网站

第六关

提示凯撒

放到CyberCher会自动转码为文本:iodj{7115i261eig7i42d5fg7412fh86ded7h},{}有这两个符号,位置也对,题意很明确,凯撒加密,放到在线网站,偏移量可以根提第一个字符对应f去计算,也可以一个个数字去试,最后是3

第七关

根据提示我们可以想到栅栏密码 110米跨几个栏 10个栏

那么解密

右边W型看起来像是base64加密过的

果然,解密得到flag

第八关

解压出来是一个exe,执行并没有反应

应该是个逆向题目,首先用 Exeinfo PE 去判断是否加壳了,是多少位的

32位,没有加壳

打开IDA32位 F5反编译

发现flag在这里出现过 点进check函数看一看

代码 检查buffer中的内容是否和flag异或0x31之后的结果相等

双击flag寻找flag在内存中的值 a3=38,所以寻找往后寻找38位

编写代码解密

s=[] result='' for a in s: result+=chr(a^0x31) print(result)

得到flag

第九关

png那么我们放到010editor中看看是不是隐写 不是隐写,打开图片看看

结合提示,这竟然是瓦坎达,对应解密出来得到flag

第十关

下载打开之后是一串数字,大小也对的上

查看内容、只含有5个数字01248,题目中又有云和影的提示,云影编码无疑

#!/usr/bin/python
# -*- coding=utf8 -*-
def de_code(c):
    dic = [chr(i) for i in range(ord("A"), ord("Z") + 1)]
    flag = []
    c2 = [i for i in c.split("0")]
    for i in c2:
        c3 = 0
        for j in i:
            c3 += int(j)
        flag.append(dic[c3 - 1])
    return ''.join(flag)
 
def encode(plaintext):
    dic = [chr(i) for i in range(ord("A"), ord("Z") + 1)]
    m = [i for i in plaintext]
    tmp = [];flag = []
    for i in range(len(m)):
        for j in range(len(dic)):
            if m[i] == dic[j]:
                tmp.append(j + 1)
    for i in tmp:
        res = ""
        if i >= 8:
            res += int(i/8)*"8"
        if i%8 >=4:
            res += int(i%8/4)*"4"
        if i%4 >=2:
            res += int(i%4/2)*"2"
        if i%2 >= 1:
            res += int(i%2/1)*"1"
        flag.append(res + "0")
    print ("".join(flag)[:-1])
 
c = input("输入要解密的数字串:")
print (de_code(c))
#m_code = input("请输入要加密的数字串:")
#encode(m_code)
 

KAMXUEDOTCOM得到的flag 但是不对 感觉应该是KANXUEDOTCOM

  • 23
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值