BUUCTF [WUSTCTF2020]level3

📅 2026/7/12 23:43:50 👁️ 阅读次数 📝 编程学习
BUUCTF [WUSTCTF2020]level3

考点:base64,交叉引用标准表查看加密逻辑

查壳,进入ida

shiftF12,猜测是base64魔改标准表的题目


回到main函数

结合程序逻辑:

程序一半概率→ 运行自己写的 base64_encode

另一半概率→ 直接输出一段 ** 长得像 Base64、但作者说 “和标准不一样”** 的字符串

题目暗示非常明显:

“这是我的程序生成的奇怪字符串,不是标准 base64”

→ 意思就是:这是用我自定义的 Base64 表编码出来的 flag。
所以d2G0ZjLwHjS7DmOzZAY0X2lzX3CoZV9zdNOydO9vZl9yZXZlcnGlfD==就是加密后的字符串

v3 = base64_encode(v6);

这里虽然是标准base64加密,双击base64_table查看也是标准表,但是直接标准表解密不出来

按A


交叉引用base64_table

进入O_OLookAtYou,这就是base64标准表被改的伪代码

#include <stdio.h> int main() { char base64_table[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; for ( int i = 0; i <= 9; ++i ) { char v1 = base64_table[i]; base64_table[i] = base64_table[19 - i]; int result = 19 - i; base64_table[result] = v1; } printf("%s",base64_table); getchar(); return 0; }


解得加密后的编码表是TSRQPONMLKJIHGFEDCBAUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/


解得flag{Base64_is_the_start_of_reverse}