目录
MISC:
1.欢迎来到2024蜀道山CTF
直接关注号获得flag,就不多说了
2.Elemental Wars
- 题目要求赢得机器人,尝试数次后,发现机器人数字完全随机,写脚本输入1-5的随机数,不断尝试即可
1 | import socket |
3.神奇的硬币纺纱机
- 一直输入 0 或 1 使结果达到 100 即可
4.javaPcap

压缩包中有两个文件,一个流量包文件,一个jar文件
首先打开流量包,过滤出来http的流量
只有get请求方式,而且看起来像是用后门执行了一些命令
追踪第一个流
将cmd 进行base64解码后是 whoami
用jd-gui进行反编译后,这些加密方式都能看出来编码,填充方式和加密模式
后面有密钥和加密方式,应该是返回的东西是用这个方式加密的
所以后面就是什么加密方式和密钥
用base64解码后,五次命令执行如下
1 | whoami |
用相关加密方式解密后的返回内容分别是(在blowfish解密时,记得把密钥取前十六位)
1 | root |
使用base64转文件工具,将第四个命令执行的 flag.zip恢复
用密码解开压缩包后
reverse:
1.map
ida32位打开,无壳
大致逻辑就是sub_4010D0函数初始化v4和v5生成地图,sub_401C40检验path正确与否
sub_4010D0生成地图函数
大致看一下就是一个15*15的地图,然后最初初始化都为0,下面的内容就是将每行的某几列变成1,相当于就是墙,而0是通路,根据代码写脚本获得地图
1 | def build_maze(): |
1 | def build_v6_maze(): |
最后地图的样子
然后就是手动找路径,最后是
1 | DRRRRRRRRDDDDRRDDDDDDRRDDDRR |
LZSDS{md5(DRRDDDDDDDRRRRDDRRRDRRRDDDRR)}
LZSDS{1979869e0c4ef6c542e54ae5c48f63ec}()
2.HelloHarmony
挺有意思的一个题,是鸿蒙逆向,之前没遇到过,网上查找资料后发现hap文件也能修改为zip解压以及用jadx分析(魔改的可以分析.abc文件)
hap文件解压后\HelloHarmony\HelloHarmony\ets目录下用jadx打开.abc文件分析
查文章发现主要是看index文件p001entry.src.main.ets.pages.Index下面
看了一下大概猜测密码就是flag
1 | Object newobjrange = import { Eeee } from "@normalized:N&&&entry/src/main/ets/Emmm/Eeee&"(5); |
这个意思就是导入了Eeee中的一个类用来检查,然后经过我的努力找到了它
大概意思就是大小用一个偏移量解密,小写的会比大写的偏移量多2,但是我没找到大写的偏移量,但这并不影响我后续枚举✌
然后分析so层找到检查
主函数:
WTF::WTF函数:

WTF::heiheihei主加密函数:
1 | WTF::blablablablabla: 对数据进行异或操作,使用密钥keys中的特定元素。此函数是数据处理的核心部分,直接操作数据块进行加密或解密。 |
大致加密逻辑是输入的密码先在java层凯撒加密,然后在so层再一次加密
然后就是脚本(一开始我是用的大端存储,发现后半部分是乱码,然后换成小端存储就正常了)
1 | # Initialize substitution array |
然后大写偏移量为5后发现变成了LZSDS,那说明小写就是7,最后得到flag
LZSDS{y0u_4r3_4_m4573r_0f_cryp706r4phy}
Crypto
1.xorsa
1 | 原脚本 |
本来感觉特别简单,q告诉我了,q和hint1异或后就知道p了,p q e n c都知道了,直接就能解出来明文
但是解出来发现e phi不互质
ee 与 ϕ(n)ϕ(n) 不互质时,调整 ee 和 ϕ(n)ϕ(n),计算私钥指数 dd
解密密文,得到明文的 kk 次幂 m′m′。
计算 kk 次方根,恢复明文 mm。
解密脚本
1 | from base64 import b64decode |