2024网鼎杯青龙组初赛REVERSE02(说难不难,说简单也不简单)
本帖最后由 JoyBoy521 于 2024-10-30 00:10 编辑# 网鼎杯
## 赛题名称:REVERSE02
从前,有一个秘密组织,他们的最高机密被存放在一段字符串中。为了保护这段字符串,组织设计了“四大护法”,每一位护法都掌握着一种魔法。只有通过“四大护法”的重重考验,才能解开这段字符串的秘密。你会如何通过这“四大护法”的考验,解开这段字符串的秘密?
提交的flag格式:wdflag{xxxxx}
赛题附件:
https://wwgn.lanzoul.com/iTbgj2dp4vmd
https://files.wangdingcup.com/wdb/6e3ab24752b064f43020d1c383094c8f.zip?AWSAccessKeyId=UIM73OJQTM1F6ZN5OHFK&Expires=1730192399&Signature=FrGjiuL09RHPEWIt2pB095Om9U0%3D
前半部分,很容易看明白。写代码可以解出来flag一 二部分。
```cpp
#include <iostream>
int main() {
char flag;
int a[] = {96, 98, 110, 96, 196, 102, 114, 198};
// a/2就是flag的第一个部分
for (int i = 0; i < 8; i++) {
flag = a / 2;
}
int b[] = {109, 10, 22, 64, 120, 12, 68, 87}; // 整数数组
const char* v22 = "XorrLord";// 字符串
//异或得到flag第二个部分
for (int j = 8; j < 16; ++j) {
flag = b ^ v22;
}
for (int i = 0; i < 16; i++) {// 输出 flag 的前 16 个字符
std::cout << flag;
}
std::cout << std::endl;
return 0;
}
```
第三部分的base64也可以解出来。
码表换一下就可以了。
最后的aes
下好断点。
随便输入32位进去,通过比较。
修改RIP地址跳过中间,那一段。
v8看逻辑像是vi,我们绕过来就是为了看v8和密钥到底是什么。在外面看v8不是很舒服,双击进去。
发现是8个0,8个8
)
密钥就是AesMasterAesMast
咱也去cyberchef解,mode咱们不知道,就一个一个换。
到ECB的时候就好了。
把四个拼接到一起就是flag。
wdflag{0170b39c5ed24c63ec3b52a6724ba7d5}
> 远程linux动调的时候,会出现缺libssl.so.10的报错。
>
> [找不到libssl.so.10的终极解决方案 - Ubuntu 18 - HENCH@T](https://henchat.net/找不到libssl-so-10的终极解决方案-ubuntu-18/)
>
> 我是看这篇文章补上的。 ECB模式是不需要的IV的,直接在在网站在线解密就行,赛博厨子不行的话就换一个网站。 cyberchef对aes类的解密很不友好 很棒收藏一波 学习一下..... 6666666666666666666 学习一下,6666666666 学习一拨 很不错的解题办法 希望不会失效,满满的干货