• 2.1【欢乐向】攻防世界新手逆向刷题被虐哭日常记录


    2.1【欢乐向】逆向刷题被虐哭日常记录

    前面好多题之前做了也没记录,懒得整了,直接从剩下的几个开始:

    Getit

    这一段是解密的关键,后面的是把flag写入文档又给删了。

    其实可以修改程序逻辑让他别删,但是我不会

     

    逆着来推一边,不会写py,用c写个。

     

     

    ?不应当,我大概是忘了加括号。

     

    ???我觉得我的没啥问题,去网上查了查相关的:

     

     

     

    在IDA里没看到有S,咱也不知道咋回事

     

     

     

     

     

    no-strings-attached

    直接扔IDA瞅瞅:

     

     

    挨个函数筛,筛出最后一个有、东西。

     

     

     

     

    有个叫decrypt的函数,看起来像是加密函数,去gdb里下个断点看看。

     

     

    r运行,n单步走。

     

     

     

    中间那一大坨大概是没设置好,现学gdb怎么用先不管了。

    查内存找字符串,

    加密好的东西放进了寄存器eax里:

     

     

     

    翻翻寄存器里的东西,找到第一个0x00结尾的是字符串的结尾。

     

     

    x:就是用来查看内存中数值的,后面的200代表查看多少个,wx代表是以word字节查看看,$eax代表的eax寄存器中的值

    在这里我们看到0x00000000,这就证明这个字符串结束了,因为,在C中,代表字符串结尾的就是"",那么前面的就是经过decrypt函数生成的falg

    C:按字符格式显示,把这些十六进制的换成好看一点的。

     

     

     

     

     

     

    python-trade:

    Pyc文件,网页反编译一下:https://tool.lu/pyc/

     

     

    翻译翻译,这堆字母让我们输入一串字符串,然后经过encode函数一系列操作之后和correct比较,正确了就算是输对了flag。

     

    那咱们就反其道而行之。

    先给他把correct给base64解密了。

     

     

    完事了之后在逆着走一遍。

     

     

     

     

     

     

     

     

    再次被自己菜哭,我觉得没啥问题咋就不给我过?

    又上网查了查,去评论转了一圈,发现有人说可能是base64解码的问题,我用的网页解码,不应该有差才对的,怪事。

    补上了几个字符然后过了,正确的是这个:nctf{d3c0mpil1n9_PyC}

     

     

     

     

    Maze

    题目给的叫迷宫,运行了一下也没啥东西,扔进ida看看:

     

    看起来像是四个字符:0oO.

     

    其实在IDA里把光标选择ASCII码按R键就可以把ASCII码变成字符了。

     

    然后这几个是坐标移动

    v9是一个二维数组,用来控制上下和左右这两种方向的。

    两种可能:

    1.v9代表横向、&v9+1代表竖向

    2.v9代表竖向、&v9+1代表横向

    反正是诶个试过去了

    从左上角到#,经历→↓→→↓↓←↓↓↓→→→→↑↑←←,转换为o0oo00O000oooo..OO

    Flag:nctf{o0oo00O000oooo..OO}

    好像是南邮的题吧...真厉害。

     

    还剩一个比较难搞,明天继续。

  • 相关阅读:
    golang 内存模型
    go-设计思想
    扁平化团队的实质
    技术团队的管理体系
    技术团队的目标管理
    从0到1打造直播 App
    管理你的项目
    JavaEE开发基础
    Java调优知识汇总
    从技术走向管理读书笔记
  • 原文地址:https://www.cnblogs.com/DorinXL/p/12250344.html
Copyright © 2020-2023  润新知