CTF---reverse
各靶场reverse的学习。
十雾九晴丶
Romantic丶AQing
展开
-
攻防世界---->happyctf
锁定地址 追踪看看。(此题,ida不能动态 od可以的。说白了,就是一个用于判断 flag ==key的。所以实际,是我们输入进行了xor。追踪 good job。原创 2024-09-28 14:01:56 · 62 阅读 · 0 评论 -
ctf.show---->r3
而在关键算法中,v17【1~5】都是定值(已写在内存,仅只有v5更变,而v5输入也没有做任何变形。所以实际,v19就是input的值。在v19的接收中,【只会接收第六位的数】且【去除最后一位】----为了演示原理。那么,是不是仅需要当 v5等于0时 就能求解出 算法中v17【1~5】的值。但是问题是v19怎么来的,代码中,没有涉及到v19如何而来?计算: 0xFFFF - v17【1~5】的值>>> v5。咳,这里 其实更建议用flag{1a9f},因为你要提交。当输入123456时。原创 2024-09-26 20:27:23 · 174 阅读 · 0 评论 -
ctf.show---->re2
切入点: 多次256 | %256 | ^当然,脚本也行(魔改的话,大可以在上面进行修改。提示:当时我做到这里,就以为丸辣 - -然后它把我enflag删了!那直接CyberChef就行了。大致一看,这就普通的RC4。逻辑很清晰,写脚本咯。原创 2024-09-25 20:18:24 · 213 阅读 · 0 评论 -
攻防世界---->key
前言: 会更reverse和web的,都会做。不过,web毕竟纯新手。要敏感函数的调用,给 call sub_CE20C0 下断点瞅瞅。main函数没有什么,就调用了函数和清零操作 我们跟进函数看看。可以看见,此时v9的值。因为我们试了赋值之后的去提交错了,,,可知,先进行异或 然后再次进行了一个循环+9的操作。所以,我们得先有这个文件,否则会退出,打印。我们反跟踪Block,看看哪儿引用了它。因为,v6的值来源于Block。得,会闪退,用WSL看看。试一试提交,赋值前的值。原创 2024-09-25 17:03:50 · 239 阅读 · 0 评论 -
攻防世界---> 简单检查-100
ida动态,发现,咱们输入的v8用v6的地址接收,且v8只是if判断,所以能够确定,flag在T时执行。前言: 额,不会 gdb 一直以为reverse不会用到gdb,pwn才会使用到gdb。因为照理来说,应该会打印flag的。程序是用eax去接收我们的输入,所以用gdb去修改eax的值(把0改成1)一开始思路,因为输入的v8是用于判断的,而它又是.exe文件。然后网上看了人家的wp———用Linux-gdb去调试。总结:reverse也要学 gdb ,,,(补习去了。所以用ollydbg进行调试。原创 2024-09-13 13:25:00 · 191 阅读 · 0 评论 -
攻防世界---->埃尔隆德32
因为首次值a2=0,已知,所以我们可以手动计算也可以用代码去获取a1打印的值。这里我选择动态查看其值。原创 2024-09-15 14:12:28 · 215 阅读 · 0 评论 -
攻防世界--->debug
reverse关于.NET的处理手段。原创 2024-09-19 21:36:43 · 531 阅读 · 0 评论 -
攻防世界--->re4-unvm-me
MD5 在線免費解密 MD5、SHA1、MySQL、NTLM、SHA256、SHA512、Wordpress、Bcrypt 的雜湊 (hashes.com)然后,,,我就问豆妈了(懒得去对应找。那么,关键点就是,对于md5的解密了。原创 2024-09-19 12:43:21 · 247 阅读 · 0 评论 -
攻防世界--->gametime
题外话:哦,程序结果还在,是因为我是在WSL—Debian上运行的。你还别说,真挺好用的,vm虚拟机能不能运行.exe我不知道。方便我进行ida——Linux远程的调试分析 以及 pwndbg的动态调试。main中很多东西,主要看if判断就可以了。可以参考这篇wp:(学到了ida和od的许多功能搭配、小技巧。汇编代码,一定要对 函数的调用 以及 jmp家族的指令格外注意。因为有意思,所以,,,打通关了。不过,咱们学习的是reverse技术。猜测其是,关键跳,影响程序走向的跳转。原理: JMP无条件跳转。原创 2024-09-20 20:59:28 · 480 阅读 · 0 评论 -
攻防世界--->hackme
总结:做题最重要的一步,是分析。原创 2024-09-17 17:04:23 · 252 阅读 · 0 评论 -
攻防世界---->ReverseMe-120
当时看见这种明文格式,心里有底,这flag可能是某种编码,然后再XOR 25得到的encode——明文。Base64编解码算法详解(附C/C++源码)_base64解码算法-CSDN博客。加密算法识别,解密算法识别,都需要能掌握。base加密的识别,还算容易。不懂,查资料呗:(这次真正理解了base64加密)。(因为,此题,是用C/C++去写的,异曲同工之妙。那么,先XOR25() 再 对其进行编码操作即可。当然,前提是,表未魔改 或者 加密算法,未魔改。此题逆着来,通过明文,去求解密文flag。原创 2024-09-20 13:55:57 · 827 阅读 · 0 评论 -
攻防世界--->BABYRE
因为call不能用在.data段,call一般是用于call函数的。说明其judge很大程度是一个函数,而非数据。总结:自我感觉考查对于数据段的识别,以及对汇编命令的理解、以及处理手段。(一般是调用了某个函数。call基本就是用于函数调用)很奇怪是一段.data(数据段)【ptr-一般是常数/局部变量】【ptr+一般是参数】原创 2024-09-19 09:22:11 · 231 阅读 · 0 评论 -
攻防世界---->Windows_Reverse1(补)
decode 取值等于 byte_ [xxx] 是否说明了byte_ 是一张解密表?总结:最好自己分析,不要纠结表的数据,为什么不一样。以自己的hex数据为准。假设,我们不知道地址随机怎么办?不能动调,只能静态分析。我们对 byte_ [xxx] 进行hex跟踪。“ 表示为不可见字符。数据未显示时,可以尝试追踪hex内存。不明白可以反汇编和汇编一起看。重新打开,静态分析。原创 2024-09-21 21:06:59 · 267 阅读 · 0 评论 -
攻防世界--->EASYHOOK
(而且其地址很可疑。401000地址,这太熟悉了。经常作为32位老旧程序的入口点。发现我们的输入变成了另一种字符,并且还写了个文件。大胆 猜测,问题出现在 WriteFile 这里。对 WriteFile 进行溯源,查看其汇编代码。不过我少了个字符,但无伤大雅,直接添上就可以了。动调,第一遍,试试水:看看程序的状态。我们对,input进行追踪。进入main:(该改的该)那么,逆向回去就可以了。原创 2024-09-20 17:29:05 · 289 阅读 · 0 评论 -
攻防世界---->Windows_Reverse1
《标记》原创 2024-09-21 14:26:42 · 453 阅读 · 0 评论 -
攻防世界--->re2-cpp-是-awesome
直接ctrl+X进行跟踪。没事,对解题并不影响。原创 2024-09-14 15:33:38 · 161 阅读 · 0 评论 -
攻防世界---->流浪者
先通过密文,逆推密文在abcd_62的v5也就是index。一开始以为,,,base62 去解密 不对。动调一下发现,input不在这个函数里面。再通过恒等式逆推input。原创 2024-09-18 13:15:30 · 297 阅读 · 0 评论 -
攻防世界--->秘密-银河-300
适用于reverse的隐写术。(用的WSL->Debian)反汇编看不出来什么名堂,那就去看汇编代码。这是我们程序打印代码。SECRET 秘密。原创 2024-09-14 17:33:22 · 271 阅读 · 0 评论 -
攻防世界--->xxxorrr。
先将s1的值进行^2 + 65的操作。在和input进行xor。之后的值与s2进行比对。那么大概就是s1和input进行 XOR 然后得到s2。此时,可以大胆猜测,其实main函数并不是一开始就载入执行的函数。总结:思维逻辑很重要。也要相信自己,不要怀疑自己的能力。F9就好,(或者你想看程序逻辑就F7、F8)最开始,额,我写完运行就感觉不对劲。找到main:(该改名字的改名。因为我们主要是想到s1变化的值。shift+e提出来就好。我们对main进行跟踪。那此时程序逻辑很清晰了。原创 2024-09-20 09:38:14 · 203 阅读 · 0 评论 -
攻防世界--->crackme
32位手动脱壳,详细教程:X32dbg ---->crackme。原创 2024-09-19 19:37:43 · 253 阅读 · 0 评论 -
攻防世界--->tt3441810
总结:reverse方向的杂项吧,签到题。关键对应hex序列的处理。猜测flag,藏在其中。不过,这是一个text。看了一个wp挺好的。直接使用ida的hex功能。可以写脚本,也可以用winhex挨个挨个敲。那么直接提取出来,去010中进行分析。记录第一次遇见,以及处理方式。原创 2024-09-19 17:45:37 · 203 阅读 · 0 评论 -
攻防世界--->迷宫
其中,可以手动,也可以写脚本(利用DFS以及BFS)告知是一个8 * X = 64的迷宫(可得列数是8)④ 得到路径 --->看 ”11“① 这题直接给出了地图。且格式为 nctf{XXX}② 找方向键。③ 分析路径。④ 得到路径。② 找方向键。③ 分析路径。① 找地图。说明flag长度为 24。原创 2024-09-09 10:24:20 · 244 阅读 · 0 评论 -
攻防世界--->地穴
先得到与0x22异或前的数据。(flag_RC4_encode)此题,在RC4加密完后,与0x22进行异或与密文进行对比。一般解这种题,都可以在xor处下断点去,看看加密后的值。reverse中RC4关键点就是,抓住异或。在reverse中,RC4考点,不会很难。很容易得知,这是一个RC4加密。原创 2024-09-08 09:17:31 · 189 阅读 · 0 评论 -
攻防世界--->开源
下载之后是一个C的源码,用notepad打开就可以。原创 2024-09-08 13:41:46 · 158 阅读 · 0 评论 -
攻防世界--->
F8步过authenticate() 会有提示:(猜测关键代码在其中)没事,动调(学会很重要)原创 2024-09-08 17:21:07 · 181 阅读 · 0 评论 -
攻防世界--->神秘
大意就是: “ 123 ” = 123 ”ABC“ = 0(以前我以为直接就是把ASCII转成数字。大概就是输入password然后给你flag。这个有点意思(其实在划水。原创 2024-09-09 14:21:04 · 172 阅读 · 0 评论 -
攻防世界--->获取
根据程序逻辑,创建了一个新文件并且进行了写入。直接Linux上动调一下。原创 2024-09-08 16:43:19 · 152 阅读 · 0 评论 -
攻防世界_游戏
这种类型,属于输入正确会输出flag。对于这题,实际上来说,属于数学题。两种方式都可以输出flag。当然看汇编代码一眼穿。首先,运行一下程序。原创 2024-09-08 10:54:04 · 270 阅读 · 0 评论 -
攻防世界--->点燃我
在已知密文的情况下,直接逆向还原去得到input的值。(自己改已知的函数名--->不再赘述)原创 2024-09-09 12:31:51 · 233 阅读 · 0 评论 -
BaseCTF [第 2 周] lk
这题程序逻辑很简单,主要考查的就是Z3的使用。(我也不会,网上看呗,问豆包什么的。选择题,咳,动漫迷可以做,也能得flag。这种格式 大数据 等 直接用python的Z3约束求解器就好。告知我们,输入有20个 且答案只能在A B C D 中产生。以& && 作为 s.add的分割。跟进BaseCTF{ 找到 main。(py用的不熟,只能这么写)原创 2024-08-27 00:00:00 · 229 阅读 · 0 评论 -
攻防世界--->易热
ps:假flag拿去试,,,哈哈哈。易错:密文C的提取。原创 2024-09-09 17:49:50 · 266 阅读 · 0 评论 -
攻防世界 reverse_re3
而3 4 分别代表了起点和终点。(可以根据数据出现的位置确定。当然我是问的豆妈,,哈哈哈。猜测dword_202AB0代表的就是迷宫地图数量。wasd一看,这题就是关于迷宫的题。然后最开始,因为数据太多把我卡住了。而 1 0 应该代表能走和不能走。这算是一道非常典型的迷宫类型题目。不过还是得仔细看看。原创 2024-08-26 22:59:36 · 266 阅读 · 0 评论 -
BaseCTF [Week2] 最简单的编码
输出的字符串,用新的base64表,以及新的base64算法去进行编码,从而得到了编码后的字符。(看BaseCTF week1 [第一周]BasePlus 官方WP)说明这是对原base64表进行了换位,从而得到了一个新的base64表。在此基础上加上了a4[]的值,而a4对应的是 v9(已知)注意,豆妈生成的解码脚本需要密文后再加一个 “=” ()我不知道需不需要 ”=“少个“ } ” O.0?可是,佬,思路清晰,动手能力不行怎么办?不过,没关系,我们可以去动态调试。里面是base64的变异加密。原创 2024-08-28 04:38:30 · 279 阅读 · 0 评论 -
Base CTF [第2周]UPX的
说明是一个自定义表的base64加密。对密文进行解密即可。(感兴趣可以去了解ESP脱壳定律)我脚本有瑕疵,不过无伤大雅,猜出来了。这里就是我们的main函数了。F9 然后在堆栈窗口给其下断点执行F9。粗略看出,这有关base64的加密。ALT +B 打开断点页面。完成了,ida打开分析程序。UPX 64 有壳脱呗。ok,脱壳机脱不了。dump出来就行了。main函数中看看。原创 2024-08-27 00:00:00 · 140 阅读 · 0 评论 -
攻防世界 easy_Maze
ida在Windows 而分析的却是Linux可执行文件,如何进行动态调试?简单的maze可以手动找出优解,复杂的需要使用回溯法(dfs或者bfs)这些操作,都在提示用户输入之前,说明是一个初始化,或者生成地图的操作。可以判断是一个maze问题(当然题目也有说明。根据原文,这一大串应该就是生成地图的变量与函数。复制到Linux中。并把它们的权限提升。注意:这是一个Linux的可执行文件。这题能直接看局部变量,看内存好复杂。这个时候我们需要去找它存储的值。那么动态调试就可以了。常规,从后往前逆向。原创 2024-08-29 14:39:20 · 234 阅读 · 0 评论 -
攻防世界--->CSAW2013 倒车2
猜测乱码原因:因为没有数据进行输入(未初始化),所以第二个MessageBoxA API弹窗引用的是一个无效的flag地址。第一次运行为空壳, 大可能是初始化了,但是没有传值引用。两者合起来就可以输出完整的flag。用ollydbg去动调(ida动调修改我不会。总结:对初学者考查工具的使用以及程序逻辑。先用32ida打开看看 并且运行程序。做题笔记--->水题。原创 2024-09-09 09:26:27 · 120 阅读 · 0 评论 -
Score
超实用简单的exe文件反编译成Python源码(可网页在线实现)!_exe反编译成源码详细教程-CSDN博客。将python代码变成可执行程序。那么试一试反汇编,去查看其源码。试过修改器去找,,,没找到。可疑字符,进行提取解密。原创 2024-09-11 12:40:42 · 165 阅读 · 0 评论 -
攻防世界--->回复 1
开学水题笔记(不是,水题。找点,自信心 T^T )。v5的值未知,说明存在于内存中,直接动调就好了。原创 2024-09-08 14:20:21 · 230 阅读 · 0 评论 -
攻防世界--->你好,CTF
签到题:将输入的字符变成16进制,与密文进行比对。那么直接将密文还原成字符就行了。如果不清楚,可以动调。原创 2024-09-08 14:10:35 · 213 阅读 · 0 评论 -
攻防世界--->平行比较器 200
那么重点就是对fist_letter的一个爆破,因为differences的值已知。打开看看(我直接用的Visual Studio 2015)而first_letter的一个范围我们已经知道了。是一个.c编译的源代码。原创 2024-09-10 09:40:27 · 224 阅读 · 0 评论