看雪CTF.TSRC 2018 团队赛 第一题 初世纪 writeup
这个 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相关推荐
- 看雪ctf 流浪者 WP
看雪ctf 第一题 流浪者 wp 打开程序,提示要验证password,载入OD,按照签到题的思路,改了一个跳转,出现了提示框pass,但是没有flag,应该不是这种思路(我是一个刚入手的萌新,可 ...
- Android加密 看雪,Android加密与解密入门两题
写在最前面 本次题目来自看雪2w班9月题.密码学一直是安全的基础,Android安全也不例外,这次9月份的题分别从java层和C层考察了密码学中常用的对称加密.hash函数以及一些基础的编码,但是不是 ...
- 2016年第七届蓝桥杯C/C++ B组国赛 —— 第一题:一步之遥
标题:一步之遥 从昏迷中醒来,小明发现自己被关在X星球的废矿车里. 矿车停在平直的废弃的轨道上. 他的面前是两个按钮,分别写着"F"和"B". 小明突然记起来, ...
- 第十四届蓝桥杯(Web 应用开发)模拟赛 1 期-大学组-线上模拟赛-第一题-数据类型检测
第一题-数据类型检测 这是检测输入数据类型的题目,考法在于掌握对数据类型的检测. 看到了很多题解是使用typeof和instanceof 来进行检测.因为这种关键字的检测类型个数都有限. 因此需要结合 ...
- 今日头条2018校园招聘第一题 ---POJ 2479
第一次参加公司的招聘笔试,虽然只是抱着试试水的心态去参加的,可惜的是第一题就做错了..... 第一题,其实只是一个求最大子段和的变式题,不过笔试的时候也不知道怎么了,就是不知道思路,最后还写了一个错的 ...
- 看雪.Wifi万能钥匙 2017CTF年中赛---第一题
考察浮点数运算 1.OD载入,搜索字符串,查找到错误或正确提示信息,双击点进去. 找到以为的关键跳转,下断点,重新载入,输入注册码,运行,竟然提示错误! 不死心的将关键跳转NOP掉,保存到文件,运行, ...
- 看雪CTF 2016_第八题分析
用exeinfo查看发现是x64程序,所以用平常的OD调试器是调试不到的,需要用x64的调试器 我这里是用x64dbug 这个调试器来进行调试分析 经过一步一步调试,发现程序调用RtlMoveMemo ...
- 2018年第九届蓝桥杯C/C++ C组国赛 —— 第一题:年龄问题
标题:年龄问题 s夫人一向很神秘.这会儿有人问起她的年龄,她想了想说: "20年前,我丈夫的年龄刚好是我的2倍,而现在他的年龄刚好是我的1.5倍". 你能算出s夫人现在的年龄吗? ...
- 看雪CTF 2016_第四题分析
结合前辈们的分析,自己再作一个分析,算是当做学习笔记吧! OD 下GetDlgItemTextA 这个断点 0040148C |. 83F8 1E cmp eax,0x1E 检测注册码长度是否为30位 ...
- 2018电赛A题记录
今年的电赛有很多的遗憾,和几位参赛的伙伴们一起思考了下电赛的A题. 我主要是思考程序部分,其实从第四问可以看到,这道题的意图十分明显,就是让我们对整个电路做一个频谱分析,也就是电赛这么多年,省赛的难度 ...
最新文章
- 如何使自己的不和谐机器人
- 二十一世纪Windows简史
- OpenGL ARB 看来终于想通了,OpenGL SDK终于要出来了。
- 新建WindowsPhone项目时提示未将对象引用设置到对象的实例
- PHP读取超大的excel文件数据的方案
- Python excle数据读写
- vim中编辑了代码 但是提示can not write的解决办法和代码对齐办法
- java实验报告心得_java实验报告心得体会.doc
- C语言判断m数为素数,判断数m是否为素数 c语言求素数的代码
- 判断 360浏览器极速 / 兼容模式
- 网上流行护眼色的RGB值和颜色代码汇总
- 可以自学计算机考证吗
- js的onfocus与onblur的用法
- Matlab数值剔除
- 通过Bellman算子理解动态规划
- MATLAB的疲劳检测系统
- python | 尝试爬虫 xpath
- C++ new和delete的原理分析
- SQL 内连接、左连接、右连接案例
- 【前端问题分析】从输入 URL 到浏览器接收的过程中发生了什么事情?