BUUCTF crackMe
太菜了 做了好久没做出来,参考其他师傅的解答总结一下
题目背景:
老规矩,Ex PE打开,32位无壳程序,用IDApro打开;主程序如下:
主体是一个while循环,如果我们想让while结束,我们就需要使得两个if成立;
我们首先看跟v3有关的loc_4011A0,点进去,发现无法反编译,解决办法IDA无法反编译
编译成功之后:
发现v3的值一直为1;
我们来看看sub_401830函数,主要由两个while构成,我们先来看第一个while
主要是把输入的转换成数字并且按照每两位分成一组,也就是输入a21c32ba,最后分为0xa2,0x1c,0x32,0xba,接下来看第二个while循环;
我们开始从后向前看, 最后需要输出v13==0xAB94,我们先点击进入sub_401470函数查看,
一堆的if判断,把判断条件转换为字符查看,这些字符就是大概他想要得到的字符,不是的话就执行错误的操作,最后进行验证,需要注意是这里
我们可以尝试运算一遍,应该是s,最后得到 a2的值为dbappsec 。最后我们就要求的是a数组的值了(源程序是byte_416050数组,被我改了)
怎么求呢?IDA调试,有反调试没成功,试试OD,
先在ida中找到xor异或,查看他的地址(建议先图装查看,找起来方便,再查看地址)
我们现在就要看ecx的值了(XOR destination, source为什么不是eax,怪我汇编没学好,就是xor异或和实际异或的顺序相反的,我是这么记忆的)在**1B3E处下一个硬件断点,然后输入用户名,随便输入一个密码,循环8次记录下ecx的值。
0x2a, 0xd7, 0x92, 0xe9, 0x53, 0xe2, 0xc4, 0xcd
最后就是写脚本解密了。
str="dbappsec"
flag=""
a=[0x2a, 0xd7, 0x92, 0xe9, 0x53, 0xe2, 0xc4, 0xcd]
for i in range(8):flag+=hex(a[i]^ord(str[i]))
print(flag.replace('0x',''),end='')
最后输出为4eb5f3992391a1ae,md5加密之后的答案为
flag{d2be2981b84f2a905669995873d6a36c}
BUUCTF crackMe相关推荐
- BUUCTF reverse题解汇总
本文是BUUCTF平台reverse题解的汇总 题解均来自本人博客 目录 Page1 Page2 Page3 Page4 Page1 easyre reverse1 reverse2 内涵的软件 新年 ...
- 某CrackMe算法分析
平时看了一些CrackMe,算法都比较简单,这次拿到的这个算法自己觉得还是比较有难度,首先自己分析时并没有完全分析出算法的结论,后来参照答案才得到较完整的分析: 1.OD载入,F9运行,输入序列号,点 ...
- crackme算法分析---CRC32算法的妙用
loveasm的crackme算法分析-----CRC32算法的妙用 [作者]:onlyu[FCG][DFCG] [软件介绍]:loveasm[YCG][DFCG]兄弟的crackme,主要锻炼算法分 ...
- BUUCTF的Web真题学习整理(一)
目录 WEB1-WarmUp (任意文件包含漏洞) WEB2-高明的黑客(fuzz脚本) WEB3-easy_tornado (服务端模板注入(ssti攻击)) WEB4-Hack World(时间盲 ...
- Crackme006 - 全新160个CrackMe学习系列(图文|视频|注册机源码)
知乎:逆向驿站 原文链接 CrackMe006 | 难度适中适合练手 |160个CrackMe深度解析(图文+视频+注册机源码) crackme006,依然是delphi的,而且没壳子,条线比较清晰, ...
- 逆向工程核心原理学习笔记(十三):分析abex' crackme #1 的延伸:将参数压入栈
还是上一次的abex' crackme #1,我们用OD附加看一下. 我们发现在调用这个MessageBox函数的时候,用了4个PUSH指令,我们在后面的注释中可以清楚的看到压入参数的内容. 如果我们 ...
- IDA Pro逆向实战之Crackme(简单篇)
IDA Pro逆向实战之Crackme(简单篇) 今天手闲的很,没事就拿出了以前没解决的逆向题来做一下,具体的源程序在附件里,废话少说,直接上菜: 0. 源程序运行效果(输入不对的,直接退出): ...
- 记对一个key file crackme的破解
crackme下载地址: http://kssd.pediy.com/tutorial/exercise/section04/chap6-1-4-03.zip -------------------- ...
- nsa构架_我如何使用NSA的Ghidra解决了一个简单的CrackMe挑战
nsa构架 by Denis Nuțiu 丹尼斯·努尤(Denis Nuțiu) 我如何使用NSA的Ghidra解决了一个简单的CrackMe挑战 (How I solved a simple Cra ...
最新文章
- 华为等向联合国提议重构互联网:提议采用一种新的核心网络技术新标准,名为“New IP”...
- zabbix添加URL监控
- mysql seq 重置_需要在Oracle中重置序列的值
- kaggle 房价预测经典文章
- Windows 10使用PowerShell创建系统还原点的技巧
- 弗吉尼亚理工计算机科学排名,2020年弗吉尼亚理工大学排名TFE Times美国最佳计算机科学硕士专业排名第45...
- hrtimer的简单使用 + 原理和实现【转】
- 让Netty“榨干”你的CPU
- 【QT 数据库专辑】【02】WIN7下搭建本地MYSQL数据库02 - 建立数据库的驱动程序-QT为例-完备版
- 如何计算近似纳什均衡_通证经济系列之纳什均衡
- php 微信扫码给红包,关于现金红包的详细介绍
- linux系统可以玩星际争霸吧,在Linux下可用Wine安装和运行星际争霸2、水煮三国
- Linux内存管理 -- /proc/{pid}/smaps讲解
- tailf、tail -f、tail -F三者区别
- 大学英语综合教程四 Unit 2 课文内容英译中 中英翻译
- HTTP解析库http-parser简介及使用
- Linux基础 linux账号及权限管理
- 去哪儿网首页-周末游组件开发(6)
- javascript设计模式-单例模式(singleton pattern)
- python学习笔记9.2-文件及文件夹操作
热门文章
- php跳转传值,php如何跳转页面并传值?
- mysql有两个结果集,MySQL:两个结果集的差异
- 无处不在的智能设备与边缘计算时代即将来临
- 民生银行马坡数据中心基础设施Uptime Mamp;O运营管理体系建立与实施
- 万物互联时代的边缘计算
- 智能电源分配PDU应用
- Py之huaweicloud-sdk-python:huaweicloud-sdk-python的简介、安装、使用方法之详细攻略
- Graphviz之DT:手把手教你使用可视化工具Graphviz将dot文件转为结构图的png文件
- DL之LeNet-5:LeNet-5算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- Py之seaborn:seaborn库的简介、安装、使用方法之详细攻略