这个 writeup我花了1个多小时才写出来,我感觉这已经不是 writeup了,这简直就是解题图文教程!!

每个人都是从新手过来的,几年前我初学逆向的时候,看到大牛写的 writeup,一头雾水,根本看不懂,所以我写这么详细是想让更多初学逆向的朋友能跟学会这门技术,感受她的魅力····

首先用PEID看一下有没有壳,发现没有壳,而且是个64位程序,这时候就可以排除用OD分析的可能了(很难过,最擅长的就是OD了),

因为CTF的题目一般不会有病毒后门什么的,所以直接在物理机上或者64位虚拟机里运行一下,猜猜思路

我输入序列号,发现会提示错误,但是我在IDA中搜索这个字符串,是什么都找不到的,这说明这个字符串可能是个图片,emmm·· 但是我现在有2个思路了,可能会用到GetDlgItemTextA这个函数来获取字符串,还可能有MessageBoxA这个函数来弹窗。所以直接导入IDA来看看

看到这个函数,果断跟进去看看,这里交叉引用走到调用处

看来我猜中了,的确是这个函数,这里可以大致的看到算法了,GetDlgItemTextA获取到文本之后,首先判断了一下我们输入的字符串的位数是不是6位,如果不是就直接报错了,不会往下判断。我们按F5转换为伪代码看

如果是逆向大佬,到这里就基本能看出flag了,但是作为小白,还是需要动态调试验证一下自己的思路的

因为OD不能用,所以还剩X64Debug和MDebug,MDebug太高端····我不太会用,但是 X64Debug和OD还是长得挺像的,新手入门也快,这里就选 X64Debug了

首先载入创世纪.exe,我们有很多种方法来到算法处,第一个可以考虑用消息断点来到达关键处,但是我们前面用IDA分析出了GetDlgtemTextA这个函数,所以就直接ctrl+G到达定位到下图位置就可以了。

下面正式开始动态分析

我们在 GetDlgtemTextA函数处下断,运行程序,随便输入字符串230597,点击cheak,断在这里

然后继续向下F8单步走,先判断我们输入的是不是6位,然后把第一位数字2的ASCII提出来减去30(这里的30是十六进制,下面也一样)和6进行比较,不一样就调到失败,这里我们就可以推出flag的第一位是30+6=36(十六进制),由于比较结果不为0,jne是会跳转的,我们把ZF标志位改为1,让它不跳

继续向下分析 ,可以看出依次把第二、三、四、五、六位进相似的判断,我们依次逆向相加,推出第2-6位的ASCII十六进制依次为45 77 69 39 48

判断完成后,程序对提示成功的字符串缓冲区地址进行复制等操作,最后当做参数传给这DialogBoxParamA这个函数

最后执行到这个call ,CM弹出正确窗口

这时候我们就可以验证刚才的逆推结果了,我们把36 45 77 69 39 48转换为ASCII就是flag了

完全正确

小白的 writeup,若有错误欢迎指正!!!

看雪CTF.TSRC 2018 团队赛 第一题 初世纪 writeup相关推荐

  1. 看雪ctf 流浪者 WP

    看雪ctf 第一题 流浪者 wp   打开程序,提示要验证password,载入OD,按照签到题的思路,改了一个跳转,出现了提示框pass,但是没有flag,应该不是这种思路(我是一个刚入手的萌新,可 ...

  2. Android加密 看雪,Android加密与解密入门两题

    写在最前面 本次题目来自看雪2w班9月题.密码学一直是安全的基础,Android安全也不例外,这次9月份的题分别从java层和C层考察了密码学中常用的对称加密.hash函数以及一些基础的编码,但是不是 ...

  3. 2016年第七届蓝桥杯C/C++ B组国赛 —— 第一题:一步之遥

    标题:一步之遥 从昏迷中醒来,小明发现自己被关在X星球的废矿车里. 矿车停在平直的废弃的轨道上. 他的面前是两个按钮,分别写着"F"和"B". 小明突然记起来, ...

  4. 第十四届蓝桥杯(Web 应用开发)模拟赛 1 期-大学组-线上模拟赛-第一题-数据类型检测

    第一题-数据类型检测 这是检测输入数据类型的题目,考法在于掌握对数据类型的检测. 看到了很多题解是使用typeof和instanceof 来进行检测.因为这种关键字的检测类型个数都有限. 因此需要结合 ...

  5. 今日头条2018校园招聘第一题 ---POJ 2479

    第一次参加公司的招聘笔试,虽然只是抱着试试水的心态去参加的,可惜的是第一题就做错了..... 第一题,其实只是一个求最大子段和的变式题,不过笔试的时候也不知道怎么了,就是不知道思路,最后还写了一个错的 ...

  6. 看雪.Wifi万能钥匙 2017CTF年中赛---第一题

    考察浮点数运算 1.OD载入,搜索字符串,查找到错误或正确提示信息,双击点进去. 找到以为的关键跳转,下断点,重新载入,输入注册码,运行,竟然提示错误! 不死心的将关键跳转NOP掉,保存到文件,运行, ...

  7. 看雪CTF 2016_第八题分析

    用exeinfo查看发现是x64程序,所以用平常的OD调试器是调试不到的,需要用x64的调试器 我这里是用x64dbug 这个调试器来进行调试分析 经过一步一步调试,发现程序调用RtlMoveMemo ...

  8. 2018年第九届蓝桥杯C/C++ C组国赛 —— 第一题:年龄问题

    标题:年龄问题 s夫人一向很神秘.这会儿有人问起她的年龄,她想了想说: "20年前,我丈夫的年龄刚好是我的2倍,而现在他的年龄刚好是我的1.5倍". 你能算出s夫人现在的年龄吗? ...

  9. 看雪CTF 2016_第四题分析

    结合前辈们的分析,自己再作一个分析,算是当做学习笔记吧! OD 下GetDlgItemTextA 这个断点 0040148C |. 83F8 1E cmp eax,0x1E 检测注册码长度是否为30位 ...

  10. 2018电赛A题记录

    今年的电赛有很多的遗憾,和几位参赛的伙伴们一起思考了下电赛的A题. 我主要是思考程序部分,其实从第四问可以看到,这道题的意图十分明显,就是让我们对整个电路做一个频谱分析,也就是电赛这么多年,省赛的难度 ...

最新文章

  1. 如何使自己的不和谐机器人
  2. 二十一世纪Windows简史
  3. OpenGL ARB 看来终于想通了,OpenGL SDK终于要出来了。
  4. 新建WindowsPhone项目时提示未将对象引用设置到对象的实例
  5. PHP读取超大的excel文件数据的方案
  6. Python excle数据读写
  7. vim中编辑了代码 但是提示can not write的解决办法和代码对齐办法
  8. java实验报告心得_java实验报告心得体会.doc
  9. C语言判断m数为素数,判断数m是否为素数 c语言求素数的代码
  10. 判断 360浏览器极速 / 兼容模式
  11. 网上流行护眼色的RGB值和颜色代码汇总
  12. 可以自学计算机考证吗
  13. js的onfocus与onblur的用法
  14. Matlab数值剔除
  15. 通过Bellman算子理解动态规划
  16. MATLAB的疲劳检测系统
  17. python | 尝试爬虫 xpath
  18. C++ new和delete的原理分析
  19. SQL 内连接、左连接、右连接案例
  20. 【前端问题分析】从输入 URL 到浏览器接收的过程中发生了什么事情?

热门文章

  1. OpenGL导入3DMax模型(.3DS)
  2. Sails框架知识点
  3. html仿QQ资料卡,JS实现的模仿QQ头像资料卡显示与隐藏效果
  4. 移动聚合支付招商,管道收入享长期分润
  5. 跨境电商独立站转化率提升神器-SaleSmartly
  6. 曲婉婷-----没有什么不同
  7. JS-underfined is not a function
  8. Stitcher: Feedback-driven Data Provider for Object Detection 论文学习
  9. JS 实现图层模式覆盖效果
  10. 控制贺尔碧格PRL及PIL模块式RT-PVR6系列比例放大器