CrackMe
文章平均质量分 76
奈沙夜影
这个作者很懒,什么都没留下…
展开
-
171021 逆向-Xp0intCTF(re300)
1625-5 王子昂 总结《2017年10月21日》 【连续第386天总结】 A. Xpoint-暨南大学校赛 B.re300排在最上面的就是分数最高的题目,我们就先搞它吧~ 直接拖入IDA反编译,找到main函数: 虽然字符串都被重新命名了有点困难, 不过大概还是能看清楚的~ v5是input的缓冲区,送入sub_4012EF进行运算,返回值为1时就正确了 那么我们跟进去看看原创 2017-10-22 01:31:07 · 891 阅读 · 0 评论 -
180515 逆向-被隐藏的真实(DDCTF_Re3)
这题本来单纯地以为是很简单的题,听欧佳俊师傅讲了一下出题思路才发现他的想法真的比答题人多得多……main函数里调用了三次get_pwd()这个函数来check输入 get_pwd中接受输入,然后对count自增,调用了Bitcoin对象的一个函数来校验输入 如果熟悉C++逆向的话,一眼就能看出来这是在调用虚函数 因为v2是对象的空间,在C++的对象构造中,开头4个字节指向的是虚函...原创 2018-05-15 00:47:07 · 1366 阅读 · 0 评论 -
180522 安卓-DDCTF2018(RSA)
RSAJAVA层没什么东西,直接将输入送入了Native层的stringFromJNI函数 这个函数垃圾代码极其的多 建议动态调试,跟随输入值来观察计算过程 在主函数中首先用gpower生成了32个字节的i²Table,又GetTicks取了两次时间,然而都没有用上 sub_3133C调用了input,从其中用到的字符串 “basic_string::_S_constr...原创 2018-05-23 11:27:43 · 743 阅读 · 0 评论 -
180619 逆向-SCTF(1)
simple反编译发现动态解密了assets中的zip文件,由于解密的dex会落地因此可以直接运行后从文件目录中pull出来 再反编译这个load.dex,onClick函数中接收了24个字符并以每8个字符一组构造Square,最后调用其中的check函数要求全部为True 构造方法为 new Square((v1[i + x] << 8) + v12 + 255, ...原创 2018-06-20 22:52:02 · 428 阅读 · 4 评论 -
180620 逆向-SCTF(2)
Script In Script下载下来文件,观察js发现有动态解密 将eval改为console.log后即可在console中抓到解码后的函数 也可在click函数中的r处下断,单步跟进后逐个查看函数function a(r) { return D(~r, 1)}function D(r, n) { return n ? D(r ^ n, (r &...原创 2018-06-20 23:16:52 · 243 阅读 · 0 评论 -
180621 逆向-SCTF(3)
crackme2java层调用了native函数,要求返回值为15 在so中动态注册了tryit函数,但函数体为乱码,估计在init中动态解密 于是上动态调试,发现解密后的函数通过fork创建了子进程来执行计算,父进程则逐字符校验 校验的东西是一个链表,仿照计算通过IDC即可抓出字符串 IDC>auto i,k;for(k=Dword(0x5db82040),i...原创 2018-06-22 14:27:49 · 329 阅读 · 0 评论 -
180531 逆向-SUCTF(Enigma)
Enigma 恩尼格码是一个由德国人亚瑟·斯雪比尤斯发明的密码机,开创了自动化加密的先河。简单来说,恩尼格码密码机利用三个转子对字母顺序进行偏移,相当于三重维吉尼亚。除此以外还有一块可以改变字母对应顺序的连接板。恩尼格码这个密码机也算比较出名了,做题之前先去回忆了一下恩尼格码的原理。(后来发现完全没用orz 打开main函数,跳过字符画后的流程很简单 接受输入-校验长度-...原创 2018-05-31 22:35:34 · 1151 阅读 · 0 评论 -
180626 逆向-SUCTF(Python大法好)
时隔许久详细的复现一下~ 这个题目也挺有意思的,刺激学了一遍pyc233题目提供了一份opcode.txt、elf二进制程序a和一个密文cipher.txtopcode打开来可以发现是pyc的解析虽然有code,但是试着用python解析了一下发现有点复杂读opcode是不可能的,这辈子都不可能的 本来读起来就麻烦,缺少符号信息就更恐怖了,更别说还有lambda和jo...原创 2018-06-27 02:22:55 · 1940 阅读 · 0 评论 -
180714 逆向-MeePwn(IMAGE_CRACKME)
一堆Reverse只有这个签到题难度的玩意儿能水一水(:з」∠)夜影为什么这么菜 Find the key that was used to generate Meepwn.ascii.bak Sometimes you don’t really need to read the code Notice: Flag is in format MeePwn{…}不需要真的...原创 2018-07-16 01:26:47 · 404 阅读 · 0 评论 -
180317 逆向-DragonQuest(NUST)
1625-5 王子昂 总结《2018年3月17日》 【连续第532天总结】 A. nust南理校赛 DragonQuest B.解压得到exe和dll 顺手拖入IDA,发现是.NET程序 dnspy打开发现主程序加壳了,查了一下壳无果 exeinfoPE还推荐我用RL!dePacker和QuickUnpack这两个万能脱壳机,坑爹呢这是~我还以为它觉得能脱呢,折腾了半小时研究怎么用...原创 2018-04-03 17:27:18 · 383 阅读 · 0 评论 -
171211 逆向-高级反调试技术
1625-5 王子昂 总结《2017年12月11日》 【连续第437天总结】 A. 《逆向工程核心原理》-高级反调试技术 B. 花指令这种反调的难度可高可低,不过对于只靠F5的萌新们都是无解的简单的只是在代码块之间放置一些垃圾代码,通过jmp跳过,使得反汇编不正确,进而影响F5的反编译 只需要清除干扰指令,或者动态调试跟一下就能很轻松的解决复杂的则会随机插入大量的花指令,与正确代码混杂在一起原创 2017-12-13 00:52:58 · 1213 阅读 · 0 评论 -
171028 逆向-以CM41为例进行Dll注入(上)
1625-5 王子昂 总结《2017年10月28日》 【连续第393天总结】 A. CrackMe41–dll注入 B. dll注入的原理是利用一个进程控制被注入进程执行LoadLibrary函数,将外部dll注入其内存中。注入以后由于共享内存空间,因此dll也就拥有了操作该进程内存的权限了。当Dll被注入时会运行DllMain函数,这就是Dll的主函数。由于之前没有写过Dll注入,因此原创 2017-10-31 00:25:53 · 403 阅读 · 0 评论 -
171029 逆向-以CM41为例进行Dll注入(中)
1625-5 王子昂 总结《2017年10月29日》 【连续第394天总结】 A. CrackMe41–Dll注入(中) B. 本次注入Dll所要注意的地方比较多 首先因为编写代码语言是C++(其实用内联汇编代码写起来费事点,但是处理乱七八糟的堆栈和参数传递要省心的多),因此要注意参数问题 其次是Hook点Hook函数的执行次序为Created with Raphaël 2.1.0原程序原创 2017-10-31 14:58:26 · 339 阅读 · 0 评论 -
171027 逆向-Patch(CrackMe之041)(下)
1625-5 王子昂 总结《2017年10月27日》 【连续第392天总结】 A. CrackMe41–patch(下) B. 上次说到把弹窗函数写好了,只等找到onClick加载的地方写入即可 然而找了半天都只发现这里: 用DeDe查了一下,02DC是Exit1的控件ID,02D8是About2的控件ID 从代码装载来看,似乎是整块整块(6字节+Name字符串)读入,而不是我想象原创 2017-10-30 23:51:35 · 539 阅读 · 0 评论 -
171013 逆向-Reversing.kr(AutoHotKey2)
1625-5 王子昂 总结《2017年10月13日》 【连续第378天总结】 A. reversing.kr B.AutoHotKey2解压出来又来了ReadMe 不过这次比较简单,翻译一下是要求让程序正确运行即可查壳发现又有UPX,upx -d脱下后就能进IDA静态分析了先运行试试,发现报Exe Corrupted,跟AutoHotKey一样嘛,应该还是自校验吧~ 那我看看源程序,结果原创 2017-10-15 01:09:38 · 679 阅读 · 0 评论 -
171031 逆向-以CM41为例进行Dll注入(下)
1625-5 王子昂 总结《2017年10月31日》 【连续第396天总结】 A. Dll注入收尾 B. 今天主要需要完成的是根据进程名自动搜索pid、错误检查和注出Dll的功能首先是Pid的搜索功能 查了一下貌似没有什么比较方便的方法,只能暴力地遍历句柄取得进程名来对比给定的进程名了 比起暴力地遍历所有句柄来说,相对优雅一点的方式是获取进程快照,来一一对比: (代码来自《逆向工程核原创 2017-11-02 03:00:14 · 528 阅读 · 0 评论 -
171014 逆向-Reversing.kr(x64 Lotto)
1625-5 王子昂 总结《2017年10月14日》 【连续第379天总结】 A. reversing.kr B.x64 Lotto从名字中就可以看出来这是一个x64程序 ExeInfoPe和PEiD似乎都不太支持x64的查壳的样子试运行,是一个CUI程序,提示Input the number 输入了几个数字似乎都没反应直接拖入64位IDA中,还好没壳,可以直接反编译 流程比较清晰,先原创 2017-10-17 00:15:18 · 618 阅读 · 6 评论 -
171128 逆向-哈密顿行动(4)
1625-5 王子昂 总结《2017年11月28日》 【连续第424天总结】 A. 哈密顿行动Level4 B. http://game6.iok.la/mission.asp?level=4 你的工作让我们看到了希望。通过明文,我们知道这应该是个配置文件。很明显的,我们通过文件信息里包含了应用程序的路径找到了那个神秘的EXE文件,我们立即调试它。但遗憾的是,当运行时,要求一组用户名和原创 2017-11-29 19:53:31 · 575 阅读 · 0 评论 -
171114 逆向-以CM为例学习MFC机制
1625-5 王子昂 总结《2017年11月14日》 【连续第410天总结】 A. 谜之CrackMe B. 来源就不说啦,总之是个MFC程序,运行界面如下 可以看到没有确认按钮,一般来说是由定时器消息或Text内容改变消息触发Check函数确认无壳后拖入IDA查找字符串,轻松定位到sub_401CD0 但是向上查找交叉引用却发现落入一个偏移中,无从下手了 对其下断,进行动态调原创 2017-11-21 00:44:44 · 532 阅读 · 0 评论 -
180721 逆向-极客巅峰(Re)
ReverseSimple Base-NIDA打开,从pdb路径可以leek出现一些信息 可以看到有Base32的字样,估计算法里可能会出现相关信息继续加载 简单重命名一下,注释上一眼就能看出来的结构 change函数里对Input做了变换,然后下面与一段字符串进行比较 注意这个地方break出去是继续跑下面的代码,并不是直接结束 从插件显示的花括号对应可以看...原创 2018-07-22 16:00:55 · 999 阅读 · 3 评论 -
180728 逆向-SMC出题笔记
在某黑哥的指示下给他加紧出两个题目~最先想到的就是34c3ctf时做过的SMC题目,那个随机数混杂着自解密真的是让我久久无法忘怀SMC题目的核心就在于自解密时的key 如果key不提供,那么考点就在于大量x86汇编中一般\x00出现的是最多的 而这需要基于一定量的代码之上才能猜出,而且这种题目相对而言可玩的花招要少很多于是选择了将key由一个.init_array中的函数动态生成...原创 2018-07-31 01:31:04 · 2481 阅读 · 1 评论 -
180804 逆向-一个Java题的CM
通常来说,java题不会出现在CTF中,因为字节码的关系几乎可以反编译出源码。 这个题目看到了一些新思路,也学到了不少东西~题目解压缩给了一个jar和dll,估计最终还是走到x86汇编上去了 逆向jar,发现java层控制GUI界面,最终将参数直接通过native函数送到了dll中—以前只知道Android可以进行native编程,原来java也是可以同样调用的过程也相同,先loadl...原创 2018-08-09 01:49:34 · 278 阅读 · 0 评论 -
181116 逆向-EIS2018(SimpleAssemblyReverse)
忘记报名了OTZ就看了个"web"题,re有空再看看吧~SimpleAssemblyReverse不太明白题目里都写着Reverse了为啥还算在Web分类下面0.0静态分析及准备访问IP只有一个输入窗口和按钮之前做过几个WebAssembly的题目了,也算轻车熟路了233用Chrome按F12调出Network窗口,找到flag.wasm,选择Open in new tab,即可保存下...原创 2018-11-16 21:31:46 · 938 阅读 · 0 评论 -
181124 逆向-2018“柏鹭杯”厦大邀请赛初赛(Re1、2)
总体来说逆向的题目质量挺高~感觉学到了不少东西=-=就是第三题放题时间有点晚233没有公网的情况下做题难度确实比较大欢迎各位师傅交流~Re1JAVA层用JEB查看反编译代码,JAVA层做了如下操作有点绕,不知道是出题人故意还是无意地,这个处理写的很蛋疼除了上述列出的字符以外都是保留不变的output的范围是彼此分开的,因此可以写出该处理的反函数def decode(x): ...原创 2018-11-24 22:32:38 · 2445 阅读 · 1 评论 -
190319 逆向-花指令
以前也接触过简单的花指令,基本上就是jz/jnz式的固定跳转前几天的某比赛中出现了一个相对而言比较复杂的花指令,参考pizza的笔记开始一阵学习XD前言花指令指的是没有卵用,会干扰代码阅读甚至反编译,却不影响程序功能的代码。广义上来说OLLVM、VMP一类的代码改变型混淆也属于花指令,本文所指的是指会干扰反汇编、影响机器码解析但不影响正常机器码的字节。原理产生花指令的根本原因是x86指...原创 2019-03-20 00:15:53 · 4897 阅读 · 0 评论 -
190330 逆向-嘉韦思杯re2
划一波水,re1秒了,re2看起来挺有意思的就处理一下main函数有一个花指令使得CreateFunction失败jmp跳到了自己指令的中间部分,NOP掉即可然后重新在开头按P或者右键CreateFunction就可以F5了main函数里没啥好说的,这个花不去也无所谓,反正汇编也看得出来call 8048580要返回1才可Correct先看一下这个函数的CFG比较像控制流平坦化或...原创 2019-03-30 22:29:02 · 22232 阅读 · 2 评论 -
190404 逆向-利用溢出修改TLS的re题
偶然在52上看到 这个帖子顺手打开看了一下主函数这里有个错误指令,附近没有跳转所以大概不是花往上翻一下标准的try语句,新增了一个异常处理结构可以看到handler指向了401269+1的地方,而401269正好就是错误指令地址也就是说相当于一个花了修正一下变成这个样子直接输出RROR!然后退出就全完了233注意到输入的buff在data段,以及scanf是%s来的,所...原创 2019-04-04 21:00:27 · 23071 阅读 · 0 评论 -
190326 逆向-MFC逆向技巧
MFC简介微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。–百度百科虽然由于实际应用中MFC似乎即将被淘汰,(据说微软放弃更新十几年,但从版本号和种种迹象来看似乎是还在不断更新的,V...原创 2019-03-27 23:43:02 · 25210 阅读 · 0 评论 -
190407 逆向-西湖论剑杯
Re1-easyCppIDA打开发现一大堆模板很丑,但仔细看一下其实只有一堆变量来回操作而已基本上就是各种STL和vector的用法,算法名都保留下来了所以难度下降很多基本流程是接收输入、生成斐波那契数列的十六项然后对输入依次使用transform和accumulate算法分别是遍历vector中的一元运算和二元运算运算都是自定义的方法,双击算法进去可以看到lambda函数tra...原创 2019-04-08 00:13:51 · 24953 阅读 · 6 评论 -
190505 逆向-DDCTF2019(Reverse)
咕咕咕咕咕连续若干CTF以后就是各种考试作业DDL催命_(:з」∠)_等这两周各种考察课完了慢慢补各种活儿吧~先交一下之前的DDWP-0-还请各位大佬多指正~Windows Reverse1通过段名发现是UPX壳,upx -d脱壳后进行分析核心函数只是通过data数组做一个转置,反求index即可值得一说的是data的地址与实际数组有一些偏移由于输入的可见字符最小下标就是空格的0...原创 2019-05-06 00:08:37 · 24418 阅读 · 5 评论 -
181111 逆向-HCTF
感谢HCTF的师傅们献上的题目~相对而言比较喜欢v爷爷出的spiral(虽然有多解(斜眼其他几题难度差了点儿_(:з」∠)_Reversespiralmain函数中比较简单输入通过argv[1]送入sub_12F9E0中检查格式,并返回除"hctf{}"外的字符个数,要求为73sub_12FB10中分隔输入,处理为46+27两段内容sub_12F430中检查第一段46个字符su...原创 2018-11-12 20:04:32 · 863 阅读 · 4 评论 -
181010 逆向-inctf(ultimateGo)
整体思路和切入点看标题大概就能猜出来是Go语言IDA加载进去看,还是没符号的Go语言逆向……之前做到有符号的是从main.main函数入手,现在连符号都没有,只好从字符串突破了运行发现有输入提示“Enter pass:“和错误提示"Wrong”Shift+F12的字符串检索中没有出现这里要知道与C语言用’\0’表示字符串结束不同,Go语言会将所有字符串连接在一起,通过起始指针和字符串长...原创 2018-10-11 04:03:10 · 1439 阅读 · 0 评论 -
180826 逆向-巅峰极客第二场(Reverse)
打开以后只有start函数,找不到main函数 但是看得到一个StartAddress 根据经验可以知道这个命名通常是指CreateThread的入口函数 进去看可以发现它设置了一个事件Hook SetWinEventHook(1u, 0x7FFFFFFFu, 0, pfnWinEventProc, 0, 0, 2u); 查了一下手册,前两个参数表示Hook的消息ID范围,从1~0x7f...原创 2018-08-26 22:11:07 · 500 阅读 · 0 评论 -
180823 逆向-网鼎杯(2-2)
gameIDA打开main函数啥有用的信息都看不到 运行一下发现是个八数码问题,要求解10000000次根据提示符去IDA的strings窗口找可以发现内存中存在这部分数据,但是没有交叉引用 说明该字符串在汇编层面是没有引用的一般来说,用户添加的信息会放在一起,所以可以在提示字符串上下翻一翻,果然找到一点有意思的东西 这个\x1BLuaQ很引入注目,大概率就是lua逆向了...原创 2018-08-23 16:42:29 · 1021 阅读 · 4 评论 -
180825 逆向-FLARE(2)
比赛地址:FLARE-ON 2018Ultimate Minesweeper打开是个扫雷,点哪都死2333 IDA看一下发现是.NET,于是用dnspy打开二话不说直接找success的窗口类 发现是由参数决定的flag 跟着交叉引用过去看参数 new SuccessPopup(this.GetKey(this.RevealedCells)).ShowDialog();...原创 2018-08-26 00:45:47 · 820 阅读 · 1 评论 -
180902 逆向-网鼎(4-dalao)
运行发现不接受输入,直接弹出了一串回显 guess the flag: �<�9�c0/(���,� �~2,- 静态分析发现巨量mov,无法创建函数 并且具有dispatch函数来分发memcpy, srand, rand等库函数 以及通过异常处理来调用函数这些特征都指向了mov混淆movfuscator通过ltrace可以看到它进行了一次memcpy,然后就是很多r...原创 2018-09-03 01:26:28 · 1128 阅读 · 4 评论 -
180913 逆向-Flare(6-1)
magic这个题目……看的我有点花orz主逻辑是铺好一个data,然后进行666次check 每次check如果通过的话会将data和输入进行异或,失败则会直接退出check内部乍看非常复杂,稍微逆一下可以看出来是个结构体 标好了导入进去即可使得check函数相对清晰 整体逻辑为检查长度-&gt;解密函数-&gt;调用func进行检查输入-&gt;加密函数并将输入copy到某...原创 2018-09-14 01:13:04 · 529 阅读 · 0 评论 -
180925 逆向-Flare(6-2)
去成都摸了个巅峰极客,感觉对渗透加深了一些理解,虽然还是不准备碰web23333靶场作为整个渗透流程的模拟,尤其是本次巅峰极客做了一个非常非常复杂的内网环境–达到三层甚至更多的跳转,还是挺有意思的 虽然如果前渗透–web不过关的话就没法开启后面的旅程了233 这样一想预选赛就掏出靶场来作为筛选,避免决赛无事可做还是挺有意义的不过作为bin狗还是希望可以在模拟过程中多加一些内容,例如APK/ex...原创 2018-09-26 02:06:54 · 373 阅读 · 0 评论 -
180928 逆向-Flare(6-3)
在完成一轮循环以后,程序会读取自身,找到结构体部分,然后乱序再回写入文件于是可以通过一个管道启动进程,然后一边读取文件获取结构体信息,一边通过管道与程序交互将之前的脚本封装好,重复调用666次即可得到结果由于比赛还未结束,所以先不放出脚本了实践发现结构体的target_data是不会变的–当然这样比较方便,毕竟crc32和b64的正向生成函数都不在程序中,所以能变的只有顺序于是甚至可以...原创 2018-09-29 00:13:45 · 297 阅读 · 0 评论 -
181008 逆向-inctf(load3r、Decoy)
题目提示可知bin文件为bootloader将其用IDA打开,选择16-bit模式加载,即可看到反汇编出的程序由于IDA不支持16-bit的F5,所以只能读汇编不过由于bootloader对长度有限制,必须为512字节以内,因此相对不是很复杂多提一句,按空格可以转为graph模式,这个状态下可以看到代码块之间的跳转关系,非常方便以seg000:000B ...原创 2018-10-09 01:20:23 · 758 阅读 · 0 评论