- 博客(35)
- 收藏
- 关注
原创 [HNCTF 2022 WEEK4]checker
是 JavaScript 中的一个内置函数,用于将 Base64 编码的字符串转换为普通的二进制字符串。总结一下就是对password进行解密得到的字符串与goldenticket相等所以我们只需要将goldenticket进行base64加密就行。下载附件,是一个html文件。HTML文件是一种用于创建网页的标记语言文件。所以将其拖到网页上查看。所以密码就是:Z29sZGVudGlja2V0。用笔记本或者VScode打开查看源码。将账号密码输入就得到正确的flag。发现要输入账号密码。
2024-12-04 13:51:44
614
原创 [SWPUCTF 2022 新生赛]贪吃蛇
这里有个逻辑,跳出来就简单的多了。贪吃蛇是达到一定分数后就可以得到正确的flag,但是要是把判断条件跟改一下,改成失败得到flag就可以。即修改跳转指令jz。(jz指令是通过ZF标志位是否跳转,当执行到JZ或者JE指令时,如果ZF=1则跳转,如果ZF=0,不跳转,jnz则相反,只是叫法不同,当执行到这两条语句时,如果标志位ZF=0,则跳转,反正,不跳转)所以将jz的机械码更改为jnz的机械码就行。发现动调里没有更改,将其更改后再次调试。下载附件,是一个可执行文件。找到关键字符串,跟进。
2024-12-04 11:14:46
394
原创 [HNCTF 2022 WEEK2]TTTTTTTTTea
这里是需要转换为四个八位的数,因为一个int是四个字节,一个字节是八位,所以就是要写成四个八位的数组。然后要注意逻辑的转换,操作的是数组里面的数据。下载附件,用ida打开。在查看key,找到密钥。
2024-11-29 17:32:12
417
原创 [羊城杯 2020]login
下载附件是一个exe文件,用pyinpyinstxtractor进行转换伪pyc文件。其中有一个pyc文件。将其转换为py文件。转换后是一个文件夹。用VScode打开。
2024-11-29 11:09:58
223
原创 [GDOUCTF 2023]easy_pyc
也就是要对密文进行解密。再在附件,是一个pyc文件,用uncompyle6进行转换成py文件。以下是按照上述思路补充完整的代码示例,用于尝试解密得到。然后通过扩展欧几里得算法等手段去求私钥指数。通常在这种情况下,如果想要得到原始的。转换回字节类型,就可以得到原始的。,这是 RSA 算法中的模数。取模)来恢复出原始消息。
2024-11-28 16:13:26
483
原创 [HGAME 2023 week1]easyasm
先是通过指针运算找到字符串中当前要处理的字符位置(基于 “i” 的值),然后取出该字符(扩展为 32 位存到 “eax”),接着将该字符与十六进制值 “33h”(十进制的 51)进行异或操作来实现加密,最后再把加密后的字符存回原位置。之后,跳转到 “loc_40116D” 继续下一轮循环操作,直到处理完整个字符串。下载附件是一个text文件,直接打开汇编代码。
2024-11-28 15:45:01
355
原创 [HGAME 2022 week1]easyasm
发现这里,首先是将ax清零,然后从数据段中拿出数据,向左偏移4,压入栈中,再清零ax,再从数据段中拿出数据,再向右偏移4,将栈中的数据拿出给bx,ax+bx,再拿ax与 (十六进制的17)23进行异或,最后的数据拿来和额外段的数据比较。下载附件,用ida打开,发现无法进行反编译,所以只能看汇编代码。发现两个段,dseg和seg001。
2024-11-28 12:14:05
216
原创 [GDOUCTF 2023]Check_Your_Luck
的函数对这 5 个整数进行一系列的条件判断。如果这 5 个整数满足特定的一组线性方程等式条件,就会输出一个包含这 5 个整数。这段 C++ 代码的主要目的是接收用户输入的 5 个整数,然后通过一个名为。下载附件,是一个c语言可执行文件,打开文件。
2024-11-27 14:58:42
216
原创 NSSCTF
显然不全是密文,有一段是用来判断是否相等的,之前的分析可以发现我们的字符结束符号是$,那么密文则为XTSDVkZecdOqOu#ciOqC}m。继续往下看,这里是在拿al寄存器于cl寄存器做异或处理。发现不能反编译,只好分析汇编语言。然后以$符号作为结尾符号.发现是与0x10进行异或。
2024-11-27 12:01:17
2005
原创 NSCTF 做题笔记
下载附件,是一个pyc文件。转换为py文件。在用vscode打开。分析源码。源码就是进行了异或和数值转换。有一点很坑,凑得中的值要转换为ASCII值否则就是一串乱码。
2024-11-26 14:57:40
809
原创 [WUSTCTF 2020]level3
正确的码表:TSRQPONMLKJIHGFEDCBAUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/发现一个码表,进行base64解密,但肯定不会这么简单。果然,在这里找到一个base64码表转换。果然解码的结果是错的,重新分析源码。跟进base64_encode.分析到这里就简单多了。下载附件,ida打开。再次进行base64解密。发现一串可疑的字符串。
2024-11-24 16:07:46
362
原创 [SWPUCTF 2021 新生赛]老鼠走迷宫
这里我们需要先将文件5和struct加上后缀.pyc,因为后续需要进行.pyc反编译成.py文件(其实struct可要可不要,struct的作用就是给5.pyc补齐前面缺失的十六进制数值,将其他的正常的.pyc文件替换struct.pyc也可以,因为我发现.pyc文件的前16位数值都是一样的)。在winhex打开两个pyc文件,将struct的前16位十六进制数复制到5.pyc开头。根据python里面的内容,flag是用wasd表示的最短路径的md5值。在将5.pyc文件反编译成.py文件。
2024-11-24 15:44:11
458
原创 [羊城杯 2020]easyre
分析源码,输入一个 38 个字符的字符串(flag),然后通过一系列的编码函数来验证这个输入的字符串是否正确。但是这并不是正确的结果,正确的结果还要对阿拉伯数字-3,因为凯撒加密是对字符进行不断位移替换的,阿拉伯数字的数值并没有变化,而且在凯撒加密的算法中出现了+3,所以要-3才能得出原来的密文。的第 26 个字符开始的 13 个字符复制到输出字符串。的第 26 个字符开始的 13 个字符复制到输出字符串。的第 13 个字符开始的 13 个字符复制到。的第 13 个字符开始的 13 个字符复制到。
2024-11-21 19:23:27
435
原创 [LitCTF 2023]snake
这一句等价于flag[i + 1]= flag[i + 1] ^ 136,flag[i]=flag[i] ^ 119,就是,for i in range(0, len(flag), 2)是两个一组flag[i + 1],flag[i]异或。发现没有源代码,查看附件名称,发现题目给的pyc文件是python3.7的,所以要更改二进制代码。下载附件,是一个pyc文件。用uncompyle6进行转换为py文件。跟改完后再次用uncompyle6进行转换为py文件。用vs code 打开查看源代码。
2024-11-20 15:51:25
497
原创 [HNCTF 2022 Week1]你知道什么是Py嘛?
这段代码是一个简单的Python脚本,用于验证用户输入的字符串(称为“flag”)是否符合特定的格式和加密规则。分析代码是一个简单的xor异或即:程序将遍历字符串的每个字符(从第二个字符开始,即索引1到第34个字符)。对于每一对相邻的字符,程序计算它们的ASCII值进行异或(XOR)操作,并将结果与预先定义的数组。下载附件是一个py文件,python反编译工具打开。中相应位置的值进行比较。如果任何一对字符的异或结果与。中的值不匹配,程序将打印“error!
2024-11-17 21:39:56
298
原创 迷宫逆向 迷宫问题
布置的地图可以由可显字符 (比如和)组合而成 (这非常明显, 查看字符串基本就知道这是个迷宫题了.), 也可以单纯用不可显的十六进制值进行表示. 可以将地图直接组成一条非常长的字符串, 或是一行一行分开布置. 如果是一行一行分开布置的话, 因为迷宫一般都会比较大, 所以用于按行(注意, 布置并非按顺序布置, 每行都对应一个具体的行号, 你需要确定行号才能还原迷宫地图) 布置迷宫的函数会明显重复多次.而被限制的字符通常会是一些方便记忆的组合 (不是也没办法), 比如w/s/a/dh/j/k/l。
2024-11-14 17:51:18
803
原创 [HUBUCTF 2022 新生赛]help
最短路将为:wwdddwwwaaawwwwwwwwwddddssssdddssdsssssssdddwwwwddsssd。很明显,CreateMap,是创造迷宫的函数,我们if语句里面说明路径是一个54长度的。找到地图,是一个二进制地图,但是要进行排序。,然后check函数检查路径正确性,Create。得到地图后,运行脚本找到最短路径。如下,map通过num得到。直接设置断点,动调。
2024-11-12 17:43:56
1459
原创 REpython逆向pyc文件
pyc文件是py文件编译后生成的字节码文件(byte code)。pyc文件经过最终会生成机器码运行。所以pyc文件是可以跨平台部署的,类似Java的.class文件。一般py文件改变后,都会重新生成pyc文件。
2024-11-09 15:32:34
637
原创 [SWPUCTF 2021 新生赛]easyapp
在主函数上面发现一个Encoder加密,分析这串代码,发现c就是主函数的汉字字符串,在这里进行了简单的异或。但是根据这个key写脚本发现不对,所以接着往下看。下载的附件是zip文件,要解压。解压完发现是apk文件,用jadk打开。所以flag就是NSSCTF{apkYYDS}在下面的主函数中发现,key值发生了改变。找到主函数,发现后面有一串汉字字符串。再根据这个key值写脚本。
2024-11-09 14:10:35
406
2
原创 NSSCTF[HUBUCTF 2022 新生赛]ezPython
下载文件,发现是一个pyc文件,用在线Python pyc文件编译与反编译打开就可以看到源码。分析这这串源码,发现要进行base64和base58两次解码和一次MD5加密。记得把 password转换成 bytes的形式。
2024-11-08 17:45:16
334
原创 NSSCTF [LitCTF 2023]enbase64
得到gJ1BRjQie/FIWhEslq7GxbnL26M4+HXUtcpmVTKaydOP38of5v90ZSwrkYzCAuND。分析函数,找到关键函数。发现这是一个换表函数。在套个脚本就出来了。
2024-11-05 15:09:15
256
原创 NSSCTF RE 题解笔记 持续更新
先查壳,无壳。ida打开。直接反编译,查看c语言代码。发现一个可以的字符串,大胆的猜一下这就是加密后的flag。再往下看发现一个XOR异或,更近。这明显就是加密方式,就可以编写脚本。所以正确的flag就是。
2024-11-03 16:02:19
613
原创 [GDOUCTF 2023]doublegame
所以正确的flag为HZCTF{811173b05afff098b4e0757962127eac13371337}查看字符串,发现一个可疑的字符串GAME OVER跟进查看。分析函数,分数达到13371337就会进行下一个游戏。双击跟进后CTRL+x 直接追踪,在进行反编译。发现正确的flag要进行MD5加密并且加上分数。在字符串中查找flag更近,跟踪反编译。在更具函数,写出python脚本。发现正确的flag要进行md5加密。查看字符串,找到地图。两个路径用短的那个。
2024-11-02 17:43:33
316
原创 NSSCTF]-Reverse:[GFCTF 2021]wordy
手动nop过于麻烦,可以用可以使用idapython(file-Script command打开)用上脚本直接把所有的jmp花指令nop掉。\xeb相当于jmp 8位立即数据,\xff为Table4 reg16。flag就是GFCTF{u_are2wordy}一看没有main函数,直接汇编发现有解析错误。这里是利用\xeb\xff来干扰ida分析的。到这里,可以直接判断这是花指令。
2024-11-02 12:13:00
236
原创 buuctf findit1
发现一串字符串,直接提交发现是错的。在网上一搜发现是经过凯撒加密的。下载完后,发现是一个apk文件。经过分析偏移量是10。找到main函数源码。
2024-10-31 13:39:57
189
原创 BUUCTF [WUSTCTF2020]Cr0ssfun1
发现这就是排序,将a1到a32进行排序就是flag。分析函数,发现关键函数位 check(v4).双击跟进。
2024-10-29 16:54:09
189
原创 [FlareOn4]IgniteMe1
得到byte_403180与byte_403000比较(及异或后是byte_403000)。函数很少,看到start代码。知道关键函数是sub_401050,跟进。逻辑就是把flag(byte_403078)v4返回的是一个定值,动态调试就能出来。与前一位异或,第一位先与v4异或。
2024-10-28 12:47:27
206
原创 BUUCTF [WUSTCTF2020]level3-buuctf
进行解密发现flag不正确,查看表的引用,发现除了加密函数之外还有一个函数对表进行了操作。在用新表进行base64解密。进去查看,发现果然进行转换。发现一个base64加密。进base64进行查看。编写脚本,进行转化。
2024-10-27 22:48:24
213
原创 栈溢出漏洞原理与防御机制
基础知识 程序编译、链接 编译过程包括预处理、编译、汇编和链接四个步骤。 预处理:处理宏命令和条件编译指令。 编译:将预处理后的代码转换成汇编语言。 汇编:将汇编语言转换成机器码,生成目标文件。 链接:将多个目标文件和库文件链接成可执行文件。 ELF文件 ELF(Executable and Linkable Format)文件是Linux系统中常用的一种标准文件格式,用于定义程序的可执行文件、可重定位文件、共享库和核心转储(core dumps)的格式。 Segme
2024-10-21 12:47:51
477
原创 计算机体系结构与指令
命令:gcc -S hello.i -o hello.s内容:生成汇编代码文件 hello.s,其中包含了汇编指令。命令:gcc -E hello.c -o hello.i内容:将所有包含的头文件内容插入到源代码中,替换宏定义,删除注释。执行:CPU执行指令,进行相应的操作。命令:gcc hello.o -o hello内容:生成最终的可执行文件 hello,其中包含了所有必要的代码和库。命令:gcc -c hello.s -o hello.o内容:生成目标文件 hello.o,其中包含了编译后的机器码。
2024-10-14 13:22:10
684
原创 函数的工作原理与系统调用
详细描述了动态链接程序的执行过程,包括从execve系统调用开始,经过fork、sys_execve、do_execve、search_binary_handler、load_elf_binary等一系列系统调用和函数调用,最终加载动态链接库并执行main函数。函数执行完毕后,先恢复ebp的值(通过pop指令),然后执行ret指令,该指令会将返回地址从栈顶弹出并跳转到调用方继续执行,同时调用方需要手动调整栈指针以平衡栈(通过add指令)。这个过程涉及到多个系统调用和程序加载步骤。
2024-10-14 13:19:59
676
原创 NSSCTF [SWPUCTF 2021 新生赛]简简单单的逻辑
list[i]>>4,就是将当前列表元素向右移4位,即当i=0时 值为47 >>4 是将47的二进制 高位向右移动四位 也就是 00101111向右移动4位 00000010=2。通过切片 result[2 * i:2 * i + 2] 获取 result 中的两个字符(一个十六进制数),并将其转换为整数,使用 int(..., 16)。将 flag 中对应位置的字符转换为 ASCII 值,使用 ord(flag[i])。通过 chr() 将结果转换为字符,并拼接到 flag 字符串中。
2024-09-21 15:05:47
499
原创 buuctf 逆向方向习题
在buuctf上刷题时发现没有详细的习题讲解,虽然本人现在还是一个在校学生,学习逆向的时间也不足一年,属于小白一个。希望在座的大佬在评论区进行讲解和补充。本人较笨,有很多不懂的东西,希望各位多多包涵,大家一起学习。
2024-07-23 16:27:06
678
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅