- 博客(108)
- 收藏
- 关注
原创 DASCTF十月RE
先查壳一个不常见的壳,找一下工具拖ida,发现main有花指令经典的jz/jnz强制跳转,层层跟进去,几个一样的花指令去除,看到256,猜就是RC4但仔细看是魔改了的仔细分析就是然后继续看,发现还有一个加密是魔改的XTEA,修改了加密的轮数 33然后就是写脚本,也是改了很多遍0.0最后看到wp发现,还是要注意数据类型否则会可能负数。
2024-10-28 23:17:14
463
原创 春秋杯RE复现
pycdc查看pyc文件运用了 key 模块又遇到了最初的问题,必须用对应版本python解包,不然没有文件 0.0就是一个魔改 RC4,多加了一个异或 i。
2024-07-23 10:56:12
789
原创 RE学习7.16-17
有花指令和函数结束判断错误的,先解决函数尾部地址的问题,反汇编一般有点问题,结合汇编看,也可以调试先大致分析,能逆,好逆的就慢慢一步步逆回去,不然就考虑爆破什么的还有要注意端序以及这有两个输入的题目,后面一个输入中的一些变量(看似是定值)可能被一些函数修改了,注意分析。太累了 0.0。
2024-07-17 01:42:20
1064
原创 NSSCTF_RE(二)暑期
wp 看了一下,原来一整个是 XXTEA 加密,工具直接可以解,不过还是分析了一下,确实很难逆。然后根据 z 来 new int 数组空间,如果 true ,长度加一,最后元素为原计算长度。pycdc打开,就是一个简单的31*31的maze,不过需要注意的是只能走0。结合文件的名字,这两个文件可能只有一点细微的差异,其他内容都是一样的。识别二进制文件中的差异,可以使用 IDA 的 BinDiff 插件。一个数独游戏,用二个二维数组添加约束,一个二维数组作地图,慢慢看。uncompyle6不能反编译pyc。
2024-07-15 00:54:48
1410
原创 NSSCTF_RE(一)暑期
一个 exe ,一个 c# 的 dll , 一个 json文件。一个没加壳的程序调用了一个魔改upx壳的dll里的ttt函数。然后010分析又是一个 c# 的 PE 结构。下面有点像凯撒,但是字符串像base64。发现是将资源文件的data文件异或了。是对一个文件读取后的操作,上厨子。这个也必须加上,不然跑出来的不对。DES 加密好像,不对是AES。真的可以,但是运行好像没有问题。一直有点搞不明白,只能找脚本了。不是 Resource 类哦。写这个也是改了几遍 0.0。感觉这就是加密,但密文呢。
2024-07-14 01:16:04
1109
原创 buuctf_RE(第三页)
这个表达式实际上是永远为假的,它因为dword_603058这个全局变量是在bss段上的,bss段上为未初始化的全局变量,所以它就是0。而且查一下它的交叉引用表也会发现与它相关的指令都是作为源操作数而非目的操作数,而且也没有取它地址做某些操作,在此基础之上我们基本可以认为它就是不变的。找到关键函数,但是很长,也只能分析出一些零碎的东西,看 wp 是通过动调来缕清程序的逻辑的。很像 flag 啊,但是提交显示错误,运行,有一会sleep感觉,但是没有回显。还有idapython提取指令的,额,算了。
2024-07-13 21:08:26
1011
原创 渔人杯——RE
看看 wp ,感觉脑洞好大, pos 就是那些坐标点,目前想到的是 maze ,QR ,image ,就想不到,感觉 ctfshow 上的题真脑洞不是一般大!ida 分析出来,main函数中套了一个又一个函数。赞个大佬的脚本,但那个 20 也是自己试出来的。附件很大,ida加载了半天,撤退。在那个函数找到疑似密文字符串。这就是 flag 了 0.0。看 wp 说是去翻其他函数。修改代码后,报了一个错。应该就是要让他 run。
2024-07-11 21:39:22
480
原创 大吉大利杯_RE
注意到paramBundle=getIntent().getData()且paramBundle具有getScheme()和getHost()方法,了解知为Android业务组件URL Scheme,到AndroidManifest.xml中查看,发现。递归深度优先搜索(DFS)的方式解决了迷宫问题,找到了一条从起点到出口的路径,并将路径输出为字符串。难崩,看了一下 wp 说map长度什么的都有,应该就是 16 * 16的。看了一圈,感觉还是要把 DFS,BFS 算法学一下,直接跑脚本算了。
2024-07-11 18:43:44
901
原创 RE真签到
我直接猜那个sub_219B是将 v10 转成十六进制字符串的,结果是 md5 加密。但这个题做出来和 md5 没什么关系。和我想的还是有一点差错的。
2024-07-10 18:40:08
228
原创 愚人杯的RE题
百度了一下,是将 jar 里的一些关键字混淆了好像,工具搞了一下,太难弄了,先遛了 0.0。不是,应该和输入的两个 key 也有关系,然后就一个异或,所以应该找到正确的key值。阿狸那个话是 580 长度,应该就是用那个数组加上key异或得到阿狸base64的话。逆了半天,看了一下wp,code 数据不一样,感觉应该是python版本的问题。看 wp 说dword_973 是300*300的数组,太长了,应该是的。最后用了 pycdc ,得到了真正的 code。看了有两个思路都挺不错的,都是爆破。
2024-07-10 17:39:35
364
原创 CTFShow中BJDCTF2020的RE题
而IDA扫出来的这个字符串有点问题,它是加密后的hex,但是像01这种的它直接变成了1,所以bytes.fromhex的时候会出错,位数都对不上。可以把初始 S盒调出来,后面解总是出乱码,也是看了好久的wp才知道v6后面要赋值的字符串是十六进制bytes组成的。写脚本时候发现了应该就是一个 base64 和 RC4 结合。应该是先 Sha1 再 Md5 加密了,解密反过来。然后贴一个大佬的脚本吧,感觉脚本都学了很多。好久没有做题,有点忘记了,直接动调。之前做过还有点印象,还是要细心一点。
2024-07-08 23:44:44
259
原创 CTFShow的RE题(四)
一个 apk 文件点击没有回显,仍 jadx 分析一下太多包了,找不到 MainActivity ,搜索 flag 也没有什么信息嗯,想不到了往里面翻翻感觉有点草率android题,找不到 MainActivity 可以先去 xml 文件看看,有入口点,是否可调试啊之类的,一些 Android 基础知识还是要去学学。
2024-07-08 12:25:32
821
原创 CTFShow的RE题(三)
可以看到数列的第58位与v9十分相似,因此可以得出v9为591286729879,v4为58,又因为v4只在1至200的范围内,数字很小因此可以忽略不记求出v9的近似值。看着挺吓人的,其实就是一个 base64 + 凯撒加密,偏移量为2。试试 OD 可以,有一个中文搜索插件,选择 ASCII 搜索。都没有什么信息,说是用 dbg 试试搜索关键字。主要就是 v4, v9的关系,x32dbg 搜索字符串也不行。得到四个参数,然后转字符串。就是这两个字符比较了,试试。然后找个在线网站查看一下。
2024-07-06 23:01:01
1831
原创 CTFShow的RE题(二)
jar逆向,可以先当成 zip 解压缩,java 文件可以直接看,class 文件可以用jd分析或者 jadx (好看一些)没有给 iv 的 DES 加密,一般是 ECB mode。
2024-07-06 20:53:40
729
原创 CTFShow的RE题(一)
所以首先 ..v4p$$!>Y59- 与7异或,得到 v7数组,即v9字符串,然后得出其在那26个字符的索引。flag{1a9f} len=10 所以就是 1a9f (存到了v19)付给了 dest。4.enflag.txt文件里面的密文是ASCII编码之后的数据(可以放ida中)还要注意的就是 key 输入过多,就会覆盖到后面的变量里(地址连着)3.RC4加密 (有一点是魔改的)也可以放到 010 里(推荐)2.对文件的读取操作。
2024-07-06 15:05:24
466
原创 [GXYCTF2019]simple CPP
整个 Main 函数就是:输入32位字符,经过异或变换,判断长度,然后将字符串堆叠成四个整型,经过下面许多变量可以反推出这四个变量,然后就可以逆回去了。哦,对了中间有一个反调试注意跳过,那个qword可以动调得到也可以通过交叉引用。感觉这个题其实还是很简单的,主要是不能看代码这么长,变量比较多就害怕!然后反堆叠(也就是固定16字节),得到字节。主要是得到字节,这个反堆叠没什么。动静结合,分段大致猜测。
2024-07-04 23:21:25
252
原创 NewStarCTF_RE(week1,2)
一个 elf 文件,42位flag,一开始打算直接动调,但想想觉得工程有点大,要42次。并且去动调的时候,发现有反调试。最开始看,觉得只要满足最后条件就行了,但发现不是,应该是要最后的,也不是每一个arrayX。烦人的是,rc4工具没解出来,写脚本没有 Crypto 库,只能去虚拟机里运行。因为 input 是 char 类型,*52可能会溢出,故第四个不能逆,就只能爆破了。不对,最后用 MT 搞出来了,修改完 xml 文件后,保存,直接重安装。嗯,jeb 不好看,主要用来调试吧,还是喜欢用 jadx。
2024-06-12 19:48:55
930
原创 跟着大佬学RE(六)
第一遍自己直接莽做,在string窗口,找到 flag{} 看到标红直接 nop 然后,然后就不知道怎么搞了。flag就藏在 unk_423030,看似没有输入实际还是有输入的,直接动调到这,没有上面正确的key。也就是说,如果在关于对话框中按左/中/右键,input 数组就会被逐字节赋值为字符 1/2/3。别人是直接在这个函数看到两次异或,然后直接解的,也行吧,但感觉不是很严谨。嗯,就是一个窗口程序,没有输入,flag 应该就藏在程序里面。嗯,改成 true ,就可以看到了。
2024-06-10 17:34:38
774
原创 RE_TEA加密
TEA这段时间遇到的是真多,有直接原始加密,也有 XTEA,XXTEA,更有在此上魔改的,之前也是能认出来,知道还是不够。en,TEA加密解密脚本还是用 C 好一些,什么溢出之类不用考虑。
2024-06-06 23:29:01
547
原创 RE_RC4加密
之前做的几道题目,rc4也是经常遇到,今来系统学学,记录一下对称加密,即加密和解密的密钥可以相互推导,也有的是相同的。RC4 是以字节流处理每一个字节,而不是 DES 的分组操作。包含三个参数:key ,enc , len(enc)首先就是 S 盒的生成,256个字节,先是0-256填充,然后又用 key,len(key) 去替换 S 盒的部分,形成一个伪随机的 S 盒。然后就是 S 盒和密文逐个字节异或,得到密文。解密再异或回去就可以了。
2024-06-06 15:47:45
337
原创 RE_Python
在Python3.7及以上版本的编译后二进制文件中,头部除了四字节Magic Number,还有四个字节的空位和八个字节的时间戳+大小信息,后者对文件反编译没有影响,全部填充0即可;对于我们用 pyinstxtractor 解包,python version 不一致是可能会在 pyc 文件生成时,头部的。不然,ezpy.exe_extracted文件夹点进去,类似PYZ-00.pyz_extracted的文件夹会是空的!唉,也是没想到去网上找一个在线网站就行了啊!难度是时间戳的问题?
2024-06-06 10:14:47
852
原创 跟着大佬学RE(四)
脚本中,输出结果中包含了很多非预期的字符,这是因为模拟过程中程序的输入没有正确处理,导致了缓冲区中存在未初始化的或多余的数据。嗯,确实方程解出来得到 key 直接运行就可以得到 flag 了,不过还是去分析了一下。是计算输入字符串的一个校验值,并将这个校验值转换为字符串形式存储在 a2指向的缓冲区。最开始是硬解的 , 嗯,看了别人wp,意识到也可以用 angr 来解。一个很多方程组的函数,还有一个嗯,对input进行一些操作的函数。angr 脚本还是要搞些优化,不然半天跑不出来。还有就是:在你当前的。
2024-06-05 22:28:17
343
原创 跟着大佬学RE(三)
双击进去看看,按 F5 ,再回到 main 函数 可以 F5 了,如果还不行就要人工干预,将光标放在函数头的位置按 ‘Y’ 强行修改参数个数或参数类型。sub_401000 函数返回一个 key 用于下面异或,该值可以静态分析,也可以动态调试,exe 没有开重定位。找一个比较合适的位置(有特殊(xor,add,sub之类的)指令位置)下断点。撕,用的 x32dbg 调的,隐不隐藏调试器都得到了正确数组。都是用 OD 调的,我也去算了(用的ida)那那个反调试是搞什么?只能先不改,看的时候注意一下分析吧。
2024-06-04 22:37:45
885
原创 跟着大佬学RE(二)
需在de4dot.exe目录下进入命令行,会在xxx.exe文件目录下生成一个xxx-clean.exe。在左移 8 位和乘 291 时都不存在截断和溢出,所以需要手动给他截断一下(& 0xFFFFFFFF)flag 寻找题,估计是藏到那个不明显函数里去了。要注意的是字符串都是在 0 处结束,不要少取了。123456进行 md5加密,取 32位小写的。一些莫名其妙的东西,要么是有壳,要么是被混淆了。还是要这么写,得到 123456。这个函数还怪多的,应该是被混淆了。要记得去掉 3,9,re。
2024-06-03 12:41:27
478
原创 跟着大佬学RE(一)
elf 从 start 函数开始执行(由 Entry point 指定),然后执行顺序是 __libc_start_main -> __libc_csu_init -> _init_array 中的函数 -> main -> __libc_csu_fini -> _fini_array 中的函数。图标、位图、指针、菜单、对话、字符串表、消息表、加速器、Borland 窗体和版本信息资源都可以完整地反编译为其各自的格式,不论是作为图像还是作为 *.rc 文本文件都可以。:这是一个句柄,指向一个内核对象。
2024-06-02 22:59:28
1046
原创 conda使用
5.conda create -n xxx python=2.7 创建一个python2.7 名为xxx的虚拟环境,如要创建32位的python环境,先设置为32位在创建环境,这样创建好的环境即为32位的Python环境,先切换到创建好的环境中。6.conda remove -n env_name --all 移除环境,也可在Anaconda Navigator中移除。4.set CONDA_FORCE_32BIT=1 # 切换到32位。编译 py文件生成 pyc 文件。
2024-06-01 22:11:09
289
原创 Frida使用与解题
对于 Android 逆向,首先需要熟悉对于 adb 基本命令使用x86_64查看架构exit 退出将文件 push 进模拟器3.赋予文件权限先 jeb 启动调试在 manifest 看是否有调试权限启动调试,要先在模拟器打开应用这时我们就可用 JEB 启动 app 调试了,在 debugger 窗口点击开始双击进程,就行了。
2024-06-01 22:10:31
606
原创 [羊城杯 2021]BabySmc
运行就是输入flag不知道怎么跳过去的这个应该就是smc加密的函数了运行完这个函数才能继续往下还是有两处问题,继续调试走完了,那俩处还是有问题所以应该是需要手动修复。
2024-05-31 22:03:52
883
原创 [SUCTF2018]babyre
键将其的数组长度改到v7和v8长度的总和216,使其成为同一个数组。注意有个反调试,可以直接nop 或者让其 retn。输入的 key 被确定在范围内,然后就是运算加密。不会改,直接插入了一个216数组好像。通过计算,就是一个超大的数组。可以在v7双击进去按下。
2024-05-30 11:57:51
196
原创 BUU_RE第一页
图中的C是密文,M是明文,D是私钥(私钥由这个公式计算得出E * D % φ(N) = 1),N是公共模数(质数 P 、Q相乘得到N),MOD就是模运算,φ(N)是欧拉函数(由这个公式计算得出φ(N) = (P-1)(Q-1))。图中的C是密文,M是明文,E是公钥(E和 φ(N)互为质数),N是公共模数(质数 P 、Q相乘得到N),MOD就是模运算。计算 base 的 exp 次方,并对 mod 取模,最后将结果写入 rop ==>RSA加密。每个输入字符要转换为两位十六进制数。
2024-05-29 23:11:32
254
原创 [ACTF新生赛2020]Splendid_MineCraft
v3 取最左边字符ACTF{xxxx ,v17是从第六个字符开始取四个字符,v18是从第十字符开始取两个字符,得到 ACTF{xxx_xxx_xxx} ,flag 26位。发现这是一个循环,循环次数151h,[esi+edi+1Fh]内容和72h异或。把输入给cl,cl又赋给bl,ecx=edi(循环次数 i ) + 0x83 ,然后就是ebx^ecx结果存到ebx。好像就是 bl=data[ flag[i]^(0x83+i) ] 这个,把 data 找到就差不多了。进入call dword。
2024-05-29 23:11:19
362
原创 CTF_RE典例
macOS 系统中的一个隐藏文件夹,通常在压缩文件(如 ZIP)中会出现。这个文件夹主要用于存储与文件系统相关的元数据,例如资源派生信息、文件权限等。0,1,2,3 不变, 4 , 5 ,6,7只异或Str[0], 8,9,10,11要先后异或Str[0],Str[1]有时候uncompyle6后会报错,可能是文件头的问题,要找到对应python版本对应的。最近好几个题都遇到了二叉树 ,嗯,明天学了再继续写。看了一下别人的wp:发现是数独游戏,不能一样嘛。需要conda工具创建环境。
2024-05-29 16:10:58
565
原创 进程与线程学习
主线程在默认情况下会等待所有非守护线程(子线程)结束后才会结束程序。也就是说,如果主线程在结束前没有调用所有子线程的。方法,主线程将继续执行,并且当主线程完成它的执行后,它将等待所有子线程结束。Lock效率更高,但是不支持多次锁的情况,一般项目开发还是用RLock。结束前可能被执行,这会导致。线程结束后,主线程打印。的值,然后程序依然会等。
2024-05-28 22:43:15
501
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人