CTF-REV-ONE_TO_TWO

EASY


DAY-9

QUESTION-1 no-strings-attached


  • 解题思路1:
    • 日常查壳,拖进IDA,Shift+F12,发现全是定义的名字,没有关键串,

    • 第一行有 /lib/ld-linux.so.2 是个 elf 文件,和 linux 没跑了。

    • 打开 mainF5,发现全是封装好了的函数:

    • 函数功能都如其名,setlocale 设置显示窗口的字符集,banner 产品运行广告,

    • prompt_authentication 迅速验证,但点开查看只有一个输出,不予理会,,

    • authenticate 验证,看来是检验用的函数,应该会和 flag 有关,点开:

    • 发现 s2 是最后用来比较的结果,上方有一个 decrypt 解密函数将解密的数据存在其中,查看其细节:


DAY-10

QUESTION-2 dynamic


  • 解题思路:
    • 日常查壳,无事发生。拖进IDA,Shift+F12,发现关键字符串 Your Flag has REencrypted.

    • 点开,Ctrl+xF5 查看反汇编代码,发现两句话前均调用了同一个函数:

    • 简单猜想下提示意思,可能是先解密再加密,点开 sub_14001129E 发现确实是基于异或的算法:

    • 观察到两次传参 a2 都大于 1,均执行 else 分支,则关注第一次调用结束后明文数据存储在哪,

    • 我们准备在函数返回前打上断点,由于本人 IDA 没配 gdb,准备 pacth 后拖 x64gdb 调试。

    • 选中最后一行 return resultTab>,找到返回前的位置:

    • 140011C24patch 一个 int 3 中断,然后保存到文件,(int30xCC):


    • 如图:

    • 拖进 x64gdb 一直按 F9 直到函数调用返回时碰到 int 3 中断停止:

    • 此时观察寄存器所指的内存的值,调试器已经显示出来 flag 了:

posted @   浅叶梦缘  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示
目录导航
目录导航
CTF-REV-ONE_TO_TWO
EASY
DAY-9
QUESTION-1 no-strings-attached
DAY-10
QUESTION-2 dynamic
发布于 2024-09-29 21:19