首先查壳,发现没有壳

然后根据PE看一下是不是32位程序,这个是32位程序,所以可以用OD来分析(希望OD能早日开发出支持64位的版本)

根据程序特征我们可以根据 Peease Input 这个字符串定位到关键点

直接载入OD,查找对应字符串

002419FE  |.  68 68303900   push Exam.00393068  在此下断

通过回溯可以看到我们目前所在的call(弄清楚自己现在所处位置)

运行程序,输入假码xuenixiang ,会断在下图位置

我们进00241A03这个call来看看

判断我们输入的字符串长度是否在10-30位之间

我们进入这个call 0022E5BF 看看

继续进2E7DC1这个call

往下单步跟,到达这里可以看到转移假码的过程

这段是在验证假码的长度和假码最高限制1E(十进制的30)的关系

我们出这2个call,看到这个地方,是可以确定flag第8位是A

00241A76处的这个call是整个程序的算法部分,它把我们输入假码的每一位都和1F异或,然后把我们输入的原有字符串替换

进CALL看看,可以看到异或的具体算法

注意这个地方,程序会将第八位无条件的换成#号,也就是说我们第八位不管是不是41(A),都会先被替换为#再参与下面的异或运算

异或的结果保存在ecx

0028A88A  这个call是检查PE是否正常,是否被修改过(会检测PE签名,NT头,等重要的地方)

下面进28A89A这个关键call

继续进call,往下跟会找到2EA465位置的这个call

进去后就是我们程序最关键的比较部分了

这里我们看到了用来比较的真码

00391000  75 72 6A 7D 70 75 78 3C 7D 6E 7B 69 71 79 72 68  urj}pux<}n{iqyrh

xor             1E

——————————————————————————————————

6A 6D 75 62 6F 6A 67 23 62 71 64 76 6E 66 6D 77

41

我们用计算器把 75 72 6A 7D 70 75 78 3C 7D 6E 7B 69 71 79 72 68 每一位和1E进行异或运算, 得到6A 6D 75 62 6F 6A 67 23 62 71 64 76 6E 66 6D 77

又因为我前面提到flag的第8位是41(A),所以 flag应该是6A 6D 75 62 6F 6A 67 41 62 71 64 76 6E 66 6D 77

我们将 6A 6D 75 62 6F 6A 67 41 62 71 64 76 6E 66 6D 77 转换为ascii   得到jmubojgAbqdvnfmw

输入jmubojgAbqdvnfmw  软件提示了OK

此 writeup若有不正确的地方,欢迎大佬指正~~

2018.12.3

www.xuenixiang.com

看雪CTF.TSRC 2018 团队赛 第二题 半加器 writeup相关推荐

  1. 看雪ctf 流浪者 WP

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

  2. # USACO@2020铜级赛第二题

    USACO@2020铜级赛第二题 题目(摘自usaco.org) Farmer John 的远房亲戚 Ben 是一个疯狂的科学家.通常这会在家庭聚会时造成不小的摩擦,但这偶尔也会带来些好处,尤其是当 ...

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

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

  4. 信息安全 数据赛 铁人三项_[信息安全铁人三项赛总决赛](数据赛)第二题

    WriteUps 首先根据队友的发现 , 找到了攻击者的 ip : 172.16.10.121 然后这条命令将所有的 http 数据包的请求以及相应全部提取出来 写了一个 Shell 脚本 , 提取完 ...

  5. Newnode‘s NOI 模拟赛 第二题 (单调dp)

    第二题 问题描述 样例输入 1 3 2 *# #* ## 样例输出 1 2 样例输入 2 4 5 *#### *#### *#### #* * * # 样例输出 2 3 提示 对于20%的数据n,m& ...

  6. c语言中猴子拿香蕉的代码题,猴子分香蕉(2018年第九届蓝桥杯省赛第二题)

    ```java /** * 标题:猴子分香蕉 5只猴子是好朋友,在海边的椰子树上睡着了.这期间,有商船把一大堆香蕉忘记在沙滩上离去. 第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份 ...

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

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

  8. 2018年第九届蓝桥杯C/C++ C组国赛 —— 第二题:最大乘积

    标题:最大乘积 把 1~9 这9个数字分成两组,中间插入乘号, 有的时候,它们的乘积也只包含1~9这9个数字,而且每个数字只出现1次. 比如: 984672 * 351 = 345619872 987 ...

  9. 2018年第九届蓝桥杯C/C++ A组国赛 —— 第二题:阅兵方阵

    标题:阅兵方阵 x国要参加同盟阅兵活动. 主办方要求每个加盟国派出的士兵恰好能组成 2 个方阵. x国发现弱小的 y国派出了130人的队伍,他们的士兵在行进中可以变换2种队形: 130 = 81 + ...

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

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

最新文章

  1. Python引起的混乱解决之道——感悟
  2. python中的定制类(转载)
  3. 推荐系统之信息茧房问题
  4. 专栏 | 基于 Jupyter 的特征工程手册:特征选择(一)
  5. union万能密码By:dangdang
  6. C语言学习之1到5的乘积1到N的乘积
  7. Dart核心基础List概述
  8. java 国家名称排序,我有一个国家名单。我想按字母顺序对它进行排序,除了两个我想放在第一位的国家...
  9. Linux基础命令---accept打印机控制
  10. 没有mysql sock_找不到mysql.sock,mysql.sock丢失问题解决方法
  11. 小红书关键词搜索商品列表API接口(分类ID搜索商品数据接口,商品详情接口)
  12. vue实现九宫格打地鼠小游戏
  13. iOS开发之制作越狱ios设备ipa包
  14. deeplink唤醒app测试软件,短信跳转app-DeepLink
  15. 计算机专业素质拓展,创新与素质拓展学分.doc
  16. 网络编程 —— 基础理论知识
  17. Could not load file ‘/etc/sysconfig/network-scripts/ifcfg-lo‘
  18. 浅析 Google 的云计算平台
  19. 程序员写代码要写注释吗?写你就输了
  20. 蓝桥杯 模板Template Part9:PCF8591 ADC/DAC

热门文章

  1. 爬取百思不得姐段子图片
  2. 如何解密Token?
  3. intel 7260 wifi linux,TK1入门教程基础篇-安装intel7260无线网卡
  4. xp大容量u盘补丁_u盘128g 个性 大容量电脑系统修复
  5. centos 7重置密码
  6. [源码分析]go-graceful如何shutdown gracefully
  7. w ndows无法连接到无线网络,windows无法连接到无线网络,小编教你windows无法连接到无线网络怎么办...
  8. sql计算用户留存率和时间留存率
  9. 这交互炸了(三):闪屏页是像云一样消失的
  10. 大话卫星导航中的信号处理系列文章——目录