自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 [SWPUCTF 2022 新生赛]upx

脱壳后,再用ida打开。反编译查看伪C代码。分析代码,发现是一个异或。

2024-11-17 21:32:32 227

原创 迷宫逆向 迷宫问题

布置的地图可以由可显字符 (比如和)组合而成 (这非常明显, 查看字符串基本就知道这是个迷宫题了.), 也可以单纯用不可显的十六进制值进行表示. 可以将地图直接组成一条非常长的字符串, 或是一行一行分开布置. 如果是一行一行分开布置的话, 因为迷宫一般都会比较大, 所以用于按行(注意, 布置并非按顺序布置, 每行都对应一个具体的行号, 你需要确定行号才能还原迷宫地图) 布置迷宫的函数会明显重复多次.而被限制的字符通常会是一些方便记忆的组合 (不是也没办法), 比如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

原创 花指令总结

重点:构造永恒跳转,添加垃圾数据!重一方面构造一个永恒的跳转,一方面又比较隐蔽,不仅骗过反编译器,更让破解者找不到花指令。

2024-10-23 12:37:30 1911

原创 栈溢出漏洞原理与防御机制

基础知识 程序编译、链接 编译过程包括预处理、编译、汇编和链接四个步骤。 预处理:处理宏命令和条件编译指令。 编译:将预处理后的代码转换成汇编语言。 汇编:将汇编语言转换成机器码,生成目标文件。 链接:将多个目标文件和库文件链接成可执行文件。 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关注的人

提示
确定要删除当前文章?
取消 删除