第二届“Parloo”CTF应急响应挑战赛-re部分
zzpu213 发表于 河南 CTF 114浏览 · 2025-05-19 04:02

第二届“Parloo”CTF应急响应挑战赛-re部分

PositionalXOR

Flag 被一种基于位置的异或加密算法混淆。加密后数据保存在 encrypted.bin 中,每个字符的加密方式与其在字符串中的位置相关。你需要逆向加密逻辑,恢复原始 Flag。

下载下来,附件是bin后缀的文件,而且比较小,直接用010看看,发现大概率就是密文。

image.png


然后根据题目描述,根据palu{的flag头,先计算出第一个的key值
image.png


然后根据题目描述说加密方式和字符串位置有关系,猜测是一次加1,然后就出来了

PaluArray

帕鲁有自己的数组,帕鲁有自己的字典,帕鲁就是帕鲁!帕鲁不要996!

64位无壳,c++写的,看着头痛。但是主函数的逻辑还是很简单的,主要就是,对对话框里面的输入存储到v18中,然后到了sub_140001994函数里面进行了加密处理,密文和最终这个1145141919810比较。

跟进到这个sub_140001994函数里面看看什么逻辑,主要是遍历字符串,查找在unk_140009B48里面的位置

可以交叉引用,发现在另外一个函数给这个数组赋值了这个Palu_996!?
image.png


也就可以写脚本去解密了,得到flag,发现交了不对,然后发现可以提交这个,然后会输出真正的flag

image.png


应该是这个地方的逻辑,输出一个框叫flag
image.png


PaluGOGOGO

帕鲁该走了,要去当苦命打工人了,GOGOGO!

看名字就知道是go语言写的,之前其实没怎么做过go写的,只知道看着麻烦。其实这道题看起来也还行,不算很麻烦,关键逻辑runtime_memequal后面跟着密文明文。main_complexEncrypt就是加密函数了,非常清楚

主要加密逻辑在这里,大概就是对明文加上a3再加v11%5后的索引值,也就是我们不知道a3是多少,可以动调获取a3的值,前面有反调试,可以直接用插件绕过
image.png


CatchPalu

主人给了帕鲁好多花花,帕鲁好开心呀!可是主人骗帕鲁,还把帕鲁抓了起来...

看这个描述就是花指令,一进去主函数都没出来,一看就是jz和jnz的经典花指令,导致后面的内容都没反编译出来,我们选中内容直接nop掉。还有几个地方,都是同样的花指令,同理都nop掉。然后重新让ida识别主函数,看伪代码

image.png


直接有明文flag,但是没有那么简单,交了不对,所以我们看到中间这个VirtualProtect函数

VirtualProtect 是 Windows API 中的一个函数,用于更改调用进程虚拟地址空间中某段已分配内存页的保护属性,例如将内存从只读改为可写,或从不可访问改为可执行等 。它常用于内存操作、权限修改以及在某些情况下绕过安全机制(如 DEP)

image.png


所以根据这个特性,我们可以直接看指向的loc_401360地址,发现也是同理去花
image.png


然后得到真正的加密地点,主要看看sub_401100和sub_401270函数

发现是魔改的rc4,主要是初始化s盒的时候进行了三轮,以及取233的模了。告诉ai需求,帮我写脚本

帕鲁迷宫

贪玩的帕鲁来走迷宫啦,主人要求我以最短路径完成全部出口!太难了... flag格式:palu{md5(最短路径步骤)} Eg:awsd是最短路径 则计算其MD5值得到palu{2f724716d49d79e1fd0d71d57d451de0}

本次re最逆天的题目,本来就是很简单的题目,给了一个python写的exe,然后解包,pycdc解不出来,需要用在线工具。本质就是用种子996770生成一个32*32的迷宫,然后需要经过5个检查点,找到最短的路径,然后计算md5就行了。本来应该轻松加愉快秒杀这种迷宫题目,结果一直交了不对。

然后我让他把迷宫打印出来看看,发现标出来的地方都有两种走法,一共6个地方也就是2^6=64种可能(出题人给了最后四步是ssds,要不然就是128种可能)。
image.png


于是我列出了其中32种,一次次去尝试,然后试到24次终于对了,贴一个能跑出一条路径的脚本,而且经过无数尝试,他都不能同时输出多条路径,好像这个算法就是算他认为的最短路径,所以只能存在一条
image.png


PaluFlat

帕鲁不是死肥宅,帕鲁不胖!帕鲁头晕目眩绝对不是炫多了!

附件下载过来好像是压缩包,解压后附件1个g的大小。。。

然后主函数一看,感觉v5就是密文了。sub_401550函数应该是加密逻辑

看起来比较复杂一堆switch和case,一共400多行代码。但是好像还是比较简单的加密逻辑,

这部分是根据索引的奇偶性来选择使用palu还是flat密钥
image.png


这里就是异或的地方了
image.png


这里进行的是高低四位互换,相当于0xAB变成了0xBA
image.png


然后进行了减85的操作
image.png


取反

image.png


直接上脚本

Asymmetric

The general difficulty of the sign-in question. --- LinkHash

又是go写的,出题人对它情有独钟啊。。。好像是一个简单的rsa,把N和e和c提取出来就能写脚本了,不太会密码,丢给ai来跑脚本了

这里质因数分解需要去在线网站分解一下

ParlooChecker

烹茶,新试水,人间清楚,物外遨游。 --- LinkHash

做了半天没有做出来,就被队友拉过去打应急响应了,so文件里面好像是有tea加密和题目描述差不多。感觉得动调拿密文密钥,但是没有做过这种题目,里面还有反frida的东西,遂放弃,等佬的wp

0 条评论
某人
表情
可输入 255