![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
逆向
CTF逆向题解
HDO清风
这个作者很懒,什么都没留下…
展开
-
NSSCTF [suctf 2019]hardcpp WP 控制流混淆
32位,盲猜md5加密,去进行解密,得到符号#,说明第一个字符是#,即知道了s[v19-1],v19=1;.又知道了v18即enc,我们就可以求出第二位,同理得到所有,脚本如下。所以v20本来应该为1,其实为21,不过v20的作用不大。这里是个混淆,无论if跳不跳转,v20都等于s长度,注意s前面加了地址符&,然后再与enc[v19 - 1]比较,然后v19加1。六个大爹干完了,然后再对逻辑进行分析,就是一直变换,就是解方程。然后输入字符串,其中第一个值给s,然后再给v24。就是返回v5低位,就是a2。原创 2023-05-08 23:15:43 · 494 阅读 · 0 评论 -
GDOUCTF L!s! WP
首先是道二进制文件差异的题目工具下载后将.dll文件复制到plugins文件夹题目的意思是让你找出差异在哪里然后根据这段差异的代码,求出flag.随便打开一个二进制文件,然后关掉保存.i64文件,再打开另外一个文件,ctrl+6打开bindiff插件,选择刚才保存的.i64文件最下面的就是差异最大的地方。分别查看两个文件的这个函数然后就是多了个这一段给出了lmao,然后赋值给V8,再对V7进行异或,这里不知道V7的值,只能爆破,但是提示了V7的类型是BYTE类型。原创 2023-05-08 17:44:36 · 73 阅读 · 0 评论 -
GDOUCTD NSSCTF2023广东海洋大学比赛WP RE(上) Tea Check_Your_Luck
下载文件是cpp是个解方程的题,用python的z3。原创 2023-04-18 19:59:14 · 653 阅读 · 0 评论 -
PE文件解析
PE结构图工具101editor。原创 2023-04-15 14:02:25 · 226 阅读 · 0 评论 -
x86汇编
AX累加,算术运算或函数返回值存储基址寄存器(BX),指向数据的指针计数寄存器CX,移位,循环,一些量数据寄存器DX,运算超过16位,高16位放在DX堆栈指针寄存器SP,用于指向栈顶栈基址指针寄存器BP,指向堆栈底部源变址寄存器SI,指向流操作的源的一个指针目标索引寄存器DI,流操作指向目标的指针。原创 2023-04-15 09:53:07 · 192 阅读 · 0 评论 -
ctfshow 1024杯 抽象的代码WP(梅森素数)
分析函数逻辑,函数x判断是否为素数,若是素数就和c的元素进行异或,但是判断是否为素数的时候,是对2的n次幂进行判断而列表c的长度为29,就是说要判断2**29次幂是否为素数,学过c语言的都知道,数太大了,需要很长很长时间才能循环判断完毕,有两种解决办法,一种就是生成素数表,另外一种方法就是梅森素数。我们知道与c元素异或的在z(K)一定为素数,由梅森素数数可知这个k也一定为素数,我们直接给出梅森素数的k就行了。梅森素数(2k−1)的梅森指数(k 值)必定也是素数。原创 2023-04-06 19:46:42 · 58 阅读 · 0 评论 -
三个小时手搓字节码(CTFshow 1024杯 抽象的代码)
题目就是python的字节码,其中python内置模块dis可以查看代码对应的字节码。原创 2023-04-06 19:12:12 · 71 阅读 · 0 评论 -
愚人杯re easy_pycWP
是一个简单的异或操作,直接就能看出来的容易。首先把pyc文件变成py文件。原创 2023-04-05 11:42:57 · 128 阅读 · 0 评论 -
月饼杯re3_若无月
感觉MSG==1比较有可能,但是问题来了,打开窗口程序是一个全屏的,而且进行任何操作都会触发关闭窗口的指令,我们就要对程序作出修改,首先改掉全屏大小。多么经典的窗口程序的反汇编代码,跟上次华科大比赛的flag自动机简直一模一样,于是我就想想上次一样,通过想窗口发送消息让窗口把flag给我们。在FindCrypto插件里面找到了base64密码表,然后查看引用,发现了是RC4,利用加密后的数字作为base表的索引,然后返回。然后还是我太天真了,直接卡死程序,然后就只能分析窗口处理程序了。原创 2023-03-21 22:58:26 · 99 阅读 · 1 评论 -
利用API引进ntdll
从指定的动态链接库 (DLL) 检索导出函数 (也称为过程) 或变量。原创 2023-03-20 19:20:09 · 99 阅读 · 1 评论 -
月饼杯re2_归心(java反汇编的新知识)
python打包成exe非常常见,然后题目提示让我们猜猜这是什么语言打包成的exe,首先排除python,其次排除C语言(c语言包非常常见),然后我排除了Java,因为Java不像python有打包库,以及C语言的gcc XXX;既然猜不出来那就硬看呗。然后有flag,但是往下继续想,可不可以把ida Strings窗口里面关于JAVA的字符全部屏蔽,然后就是直接进行一个反汇编,然后通过这个反汇编代码,找到Hint这是个JAVA打包的exe程序,然后再对class文件进行分析,这难度就一下子上来了。原创 2023-03-20 18:45:17 · 101 阅读 · 0 评论 -
月饼杯re1 西北望乡
直接主函数打开,让你输入一个flag,然后对flag进行处理,上面说了flag是45个字符然后全为小写,但是,falg其实有数字。好好数一数多少位,45位,但是dog出题人又在程序里写了句莫名其妙的话。然后发现最后五个爆破不出来,tnnd爆破不出来就对了因为最后五位是。有数字,需要另外爆破,我们知道了最后一位是“}”,就只需要爆破四位。每次循环乘的系数都一样,我们知道了处理后的结果以及前五位。分析k和m循环发现flag每五个字符一处理。,可以先爆破三个系数然后每5个一爆破。然后flag就出来了。原创 2023-03-19 16:53:30 · 66 阅读 · 0 评论 -
进程重影!!!
正常的删除文件操作,在删除已经被映射到内存的文件时,windows会报错阻止删除。也就是是我们要先删除文件再映射到内存,但是文件都已经被删除了怎么映射呢?首先了解进程创建过程但是,PsSetCreateProcessNotifyRoutineEx并不是在创建进程的瞬间就完成的。在执行这一段代码时不会被调用而是执行了下面代码才会调用这里就出现了时间差,可以在PsSetCreateProcessNotifyRoutineEx之前对文件进行修改,删除,伪装成普通文件。然后来解决开头的问题解决方法是。原创 2023-03-19 16:39:57 · 174 阅读 · 1 评论 -
BJDCTF2020 Easy WP
ida动调发现程序设计的就是不执行这段函数,我们可以通过修改EIP的值来使ida执行这段函数。双击EIP将地址改为que函数的地址401520。然后一个一个函数的找,找到了个输出符号的函数。对处理后的数据进行判断然后输出字符*得到flag{HACKIT4FUN}ida打开,让我找flag。首先再main函数下个断点。原创 2023-03-17 18:08:41 · 68 阅读 · 0 评论 -
BUUCTF CrackRTFWP
这个往文件里写东西,你写的东西决定了这个文件是什么属性的,第二个参数lpBuffer就是要往文件里写的内容,包括文件的文件头,所以我们的rft文件头就是经过异或加密的资源内容,那么我们让rft文件头的前六位与查找资源的前六位再次异或不就可以得到了18位字符串的前六位。知加密标志是0x8003,MD5加密,前六位的加密的字符有十八位,前六位是我们手动输入进去的,既然是输入的肯定是可显示字符,ASCII的范围是32~126,于是,我开始尝试爆破。前六位出来了,所以我们第一次输入123321,第二次输入~!原创 2023-03-10 18:41:34 · 46 阅读 · 0 评论 -
如何利用python把16进制的低位和高位拼接起来
在REVERSR中会有加密操作,分别给一个16进制的高位和低位赋值,例如。现在我们假设高位赋值变量为hi,低位赋值变量为lo,python代码如下。把v6高位赋值位v0,低位赋值为v4[2*i-1]原创 2023-02-24 13:59:06 · 1335 阅读 · 0 评论 -
ctfshow BJDCTF2020 encode wp
进入sub_8048AC2,base加密的代码看多了一眼就认出了这是base加密,蓝色的a0123456789Abcd就是密码表双击进入得到密码表。不知为何我的ida插件Findcrypto识别不出来Base和RC4加密。v5[18]是加密数据,v4是长度,v5是密钥,v3是v5长度。再进入sub_8048E24,是一个rc4加密。密钥v5=Flag{This_a_Flag}根据代码推测函数,鼠标放到函数上N键重命名。然后再base解密得到falg。可知RC4加密后的字符串为。得到了异或后的v5[18]原创 2023-02-17 18:06:09 · 262 阅读 · 0 评论 -
BUUCTF Youngter-drive
如果是小写字母执行else的操作把该字母替换为off中的字母,小写字母替换的范围是122-96=26,97-96=1,所以flag中的小写字母可以替换为off[1]-off[26],易知。分析替换函数,是从后flag[29]开始替换,然后flag[28]不替换,然后falg[27]替换,说明索引为奇数替换,索引为偶数不替换(索引从0开始)其中dword是29,先把flag和29传入一个函数,然后dword自减1,然后再冻结该线程,去执行第二个线程,就是sub_41119F.栈空间大小,0则为1MB。原创 2023-02-10 16:24:39 · 107 阅读 · 0 评论 -
【无标题】
然后我们就在bin这个文件夹里右键用终端(cmd)(powershell)打开,使用指令。写完代码会有这几个文件,我们把main.c的文件复制到codeblock路径下的。然后就在bin文件夹里出现了main.exe的文件。原创 2023-01-03 22:29:55 · 29 阅读 · 0 评论 -
Hackergame 2022 Flag自动机
这里开始给窗口类的属性赋值,其中第一个是窗口类的名称,第二个是给窗口句柄赋值,第三个是背景样式可以忽略,第四个是窗口的处理过程,第五个是光标的位置,不用管。这里是注册一个窗口然后给CreatWindowExW用,由后面的参数可知,所使用的窗口类的名称是“WndClass.lpszClassName”,即。改变窗口的消息队列首先要有窗口,所以第一个参数是窗口的句柄,就是窗口的身份证,后三个就是要改变的参数了,我们要获得这个窗口的句柄。第一个是你要获取句柄的窗口的窗口类的名称,第二个是窗口名称。原创 2023-01-03 20:49:33 · 163 阅读 · 0 评论 -
BBUCTF luck_guy题解
BBUCTF luck_guy题解原创 2022-11-07 20:10:09 · 144 阅读 · 0 评论 -
BBUCTF Java逆向解密题解
BBUCTF Java逆向解密题解原创 2022-11-04 16:20:55 · 165 阅读 · 0 评论 -
BBUCTF 不一样的flag题解(初始迷宫)
BBUCTF 不一样的flag题解(初始迷宫)原创 2022-10-29 19:29:05 · 238 阅读 · 0 评论 -
BBUCTF RE reverse3题解
BBUCTF RE reverse3题解原创 2022-10-25 20:29:47 · 1691 阅读 · 0 评论 -
BBUCTF RE Hello world题解
BBUCTF RE Hello world题解原创 2022-10-25 20:06:22 · 116 阅读 · 0 评论 -
BBUCTF XOR题解
BBUCTF XOR题解原创 2022-10-24 22:41:37 · 1137 阅读 · 0 评论 -
BBUCTF 新年快乐
BBUCTF 新年快乐题解原创 2022-10-22 14:47:06 · 140 阅读 · 0 评论 -
BBUCTF 内涵的软件
BBUCTF 内涵的软件题解原创 2022-10-22 14:35:17 · 54 阅读 · 0 评论 -
BBUCTF reverse2题解
BBUCTF reverse2题解原创 2022-10-22 14:24:06 · 298 阅读 · 0 评论 -
BUUCTF reverse1题解情况
BBUCTFreverse1题解情况原创 2022-10-22 14:13:27 · 273 阅读 · 0 评论