zoukankan      html  css  js  c++  java
  • 巅峰极客 2019部分题解 writeup

    巅峰极客 2019部分题解 writeup

    Misc

    签到

    1,直接丢进ida,搜索flag字符串,即可得到flag: flag{72643b92-37b4-4f7c-b40e-57d857869200}

    MBP是最好的!

    题目描述: enjoy yourself

    1,下载附件得到一个压缩包,压缩包中包含了一个ctf.dmg文件。

    2,使用UltraISO打开该dmg文件,在.Trashes/501文件夹下面得到flag.zip文件,但是发现此文件已损坏,如图:

    3,这题misc考察是取证相关知识,我们首先使用UltraISO将dmg文件转换为iso文件,然后使用R-STUDIO进行文件恢复,再次打开.Trashes/501文件夹下面得到flag.zip文件即可发现该文件经过加密了,然后使用ziperello进行暴力破解即可。

    4,成功拿到flag

    steganography

    题目描述: 有一天,V的同学给了他一张图片,说里面藏着巨大的秘密。你能帮V找出秘密么?

    1,使用binwalk对图片中隐藏的文件进行分离,得到一个40FBE.zip和一个0kb的leaf.pyc文件:

    2,对40FBE.zip文件进行解压缩操作,得到flag.xml文件:

    3,推测20代表0,09代表1,使用winhex打开flag.xml文件,编辑》复制所有》十六进制数值:,然后使用python进行转换:

    # with open("flag.txt", "r") as f:
    #     flag = f.read()
    
    crypto = "2009092020090920200909200909202020090920202020092009092020090909200909090920090920200909202009202020090909202020202009092020202020200909200909202020090920202009202009092020202020200909200920092009092020090920202009200909200920090920200920092009092020200909202009092009202020200909202009092020092009092009"
    
    flag = ""
    for i in range(0, len(crypto), 2):
        if crypto[i] == "2":
            flag = flag + "0"
        if crypto[i] == "0":
            flag = flag + "1"
    
    
    for i in range(0, len(flag), 8):
        print(chr(int(flag[i:i+8], 2)), end="")
    

    得到flag的一半:

    4,继续分析,从40FBE.zip中提取出docx文件,或者直接将40FBE.zip改为40FBE.docx即可,然后打开文件,发现一行行的经过base64编码过的数据,由此可以确定可能是base64隐写,于是将40FBE.docx文件中的base64数据复制到stegoFile.txt文件中,使用脚本直接解密:https://github.com/cjcslhp/wheels/blob/bca4381c29d09dd668604119e2d5e6fa9295eae7/b64stego/b64DeStego.py

    import base64
    
    def deStego(stegoFile):
        b64table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
        with open(stegoFile, 'r') as stegoText:
            message = ""
            for line in stegoText:
                try:
                    text = line[line.index("=") - 1:-1]
                    message += "".join([ bin( 0 if i == '=' else b64table.find(i))[2:].zfill(6) for i in text])[6-2*text.count('='):6]
                except:
                    pass
        return "".join([chr(int(message[i:i+8],2)) for i in range(0,len(message),8)])
    
    print(deStego("stegoFile.txt"))
    
    

    由此得到压缩包的密码:

    I4mtHek3y@

    5,解密压缩包,得到leaf.pyc文件,首先可以进行反编译:得到提示"I am not the reverse"

    6,推断此题为pyc隐写,使用脚本:https://github.com/AngelKitty/stegosaurus

    得到另一半flag:57f3-8cb4-1add2793f508}

    7,组合起来得到最终flag: flag{2806105f-ec43-57f3-8cb4-1add2793f508}

    web

    aweb_1

    1,此题目主要考察二次注入,再uploadlabs中有类似的训练题,只是此处需要使用/**/进行绕过:

    注册时邮箱使用:1406753911@qq.com 用户名使用:admin'/**/and/**/'1'='1 密码使用:123456

    登录时候使用:1406753911@qq.com 123456
    即可成功登录并查看flag。

    upload

    题目描述:所有的东西都给你了,自己好好寻找利用吧。

    1,

  • 相关阅读:
    洛谷 P4071 [SDOI2016]排列计数
    问题 G: 【一本通提高同余问题】计算器
    问题 A: 【一本通提高组合数学】Bullcow 牡牛和牝牛
    浅谈卢卡斯定理(非扩展)
    2019西安联训B层 Day 6练习题 问题 C: 扩展欧几里得
    react使用lazy()和Suspense实现根据路由进行代码分割
    react-loadable 使用高阶组件动态import组件,实现代码分割(code-splitting)
    react angular vue流行度对比
    react 服务端渲染(ssr) 框架 Next.js
    超级字符串内class正则匹配替换 可以用于css modules
  • 原文地址:https://www.cnblogs.com/v01cano/p/11733532.html
Copyright © 2011-2022 走看看