【BUUCTF】CRYPTO-刷题记录-看我回旋踢
题目描述 解题步骤下载附件后,得到:synt{5pq1004q-86n5-46q8-o720-oro5on0417r1} synt,经常做CTF也要记住,flag的13位凯撒。 1flag{5cd1004d-86a5-46d8-b720-beb5ba0417e1} ROT13代码12345678910111213141516171819def rot13(text): result = "" for char in text: if 'a' <= char <= 'z': # 小写字母:a-z (97-122) result += chr((ord(char) - ord('a') + 13) % 26 + ord('a')) elif 'A' <= char <= 'Z': # 大写字母:A...
【BUUCTF】CRYPTO-刷题记录-变异凯撒
题目描述 解题步骤下载附件,得到:12加密密文:afZ_r9VYfScOeO_UL^RWUc格式:flag{ } 结合题目,进行分析,其实古典密码还是要看每个字符的关联。我们根据附件的提示,比如:123456如果不考虑加密密文的倒序、变换可能是f - > al - > fa - > Zg - > _那么我们继续想一下: 123456789f = 102l = 108a = 97g = 103a = 97f = 102Z = 90_ = 95 计算一下前面四位: 1234f - a = 102 - 97 = 5l - f = 108 - 102 = 6a - Z = 97 - 90 = 7g - _ = 103 - 95 = 8 这下懂了吗?也就是递增去减 明文 ASCII 密文 ASCII 差值(明文 - 密文) f 102 a 97 102 - 97 = 5 l 108 f 102 108 - 102 = 6 a 97 Z 90 97 - 90 = 7 g 103 _ 95 103 - 95 = 8 ...
【BUUCTF】CRYPTO-刷题记录-URL编码
题目信息 解题步骤根据题目,得到下面的内容: 1%66%6c%61%67%7b%61%6e%64%20%31%3d%31%7d 使用https://tools.qsnctf.com/进行URL解码,得到`flag{and 1=1}`
【BUUCTF】CRYPTO-刷题记录-MD5
题目信息 解题记录根据附件,拿到了一串MD5:e00cf25ad42683b3df678c61f42c6bda flag:flag{admin1}
【BUUCTF】CRYPTO-刷题记录-一眼就解密
题目信息 解题步骤 一眼Base64,flag{THE_FLAG_OF_THIS_STRING}
【BUUCTF】REVERSE-刷题记录-SimpleRev
题目信息 解题步骤 分析main 12345678910111213141516171819202122int __fastcall __noreturn main(int argc, const char **argv, const char **envp){ int v3; // eax char v4; // [rsp+Fh] [rbp-1h] while ( 1 ) { while ( 1 ) { printf("Welcome to CTF game!\nPlease input d/D to start or input q/Q to quit this program: "); v4 = getchar(); if ( v4 != 100 && v4 != 68 ) break; Decry("Welcome to CTF game!\nPlease input d/D to start or input q/Q to...
【BUUCTF】REVERSE-刷题记录-不一样的flag
题目信息 解题记录 根据提示,发现是个迷宫题目 回到伪代码: v3 的内容是 “*11110100001010000101111#”,其实也就是地图数据。 1*1111 01000 01010 00010 111# 共 25 个字符 + 起始 * + 结束 # 。 而在下面判断部分里,有这段关键逻辑: 123if ( v7[5 * *(_DWORD *)&v3[25] - 41 + v4] == 49 ) exit(1);if ( v7[5 * *(_DWORD *)&v3[25] - 41 + v4] == 35 ) 这里的索引表达式: 15 * *(_DWORD *)&v3[25] - 41 + v4 说明: *(_DWORD *)&v3[25] 是纵坐标(即 y) v4 是横坐标(即 x) 每行的偏移是乘以 5 说明地图是 5 列一行,即 5×5 的网格! 5×5 一共 25 个格子,刚好对应字符串里除开起点 * 和终点 # 的 25 个中间字符。 把字符串 *11110100001010000101111# 看作 5...
【BUUCTF】REVERSE-刷题记录-helloword
题目信息 解题步骤 一个Android逆向 IDA查看 让我看看有多少人不知道IDA其实也可以看Android? JEB Pro 12345678910111213141516171819202122232425package com.example.helloword;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.view.Menu;import android.view.MenuItem;public class HelloWorldActivity extends ActionBarActivity { @Override // android.support.v7.app.ActionBarActivity protected void initializeActivity(Bundle savedInstanceState) { super.initializeActivity(saved...
【BUUCTF】REVERSE-刷题记录-reverse3
题目信息 解题步骤 main函数12345// attributes: thunkint __cdecl main(int argc, const char **argv, const char **envp){ return main_0(argc, argv, envp);} 先理解一下现在的代码: 1234567891011121314151617181920212223242526272829303132333435int __cdecl main_0(int argc, const char **argv, const char **envp){ size_t v3; // eax const char *v4; // eax size_t v5; // eax char v7; // [esp+0h] [ebp-188h] char v8; // [esp+0h] [ebp-188h] signed int j; // [esp+DCh] [ebp-ACh] int i; // [esp+E8h] [ebp-A0h] ...
【BUUCTF】REVERSE-刷题记录-xor
题目信息 解题步骤 MacOS程序 1234567891011121314151617181920212223int __fastcall main(int argc, const char **argv, const char **envp){ int i; char __b[264]; // 缓冲区,用于存储用户输入 memset(__b, 0, 0x100u); // 清零缓冲区(256字节) printf("Input your flag:\n"); // 提示输入 get_line(__b, 256); // 获取输入(最多256字符) if ( strlen(__b) != 33 ) goto LABEL_7; // 长度必须为33(包含末尾的'\0'?不,strlen不包括'\0' → 所以是33个可见字符) for ( i = 1; i < 33; ++i ) __b[i]...












