【BUUCTF】REVERSE-刷题记录-新年快乐
题目信息 解题步骤 发现应该是有upx壳 ida打开分析 代码的意义就是将HappyNewYear!存储到了Str2,然后和用户输入的Str1进行比对,所以得出实际上FLAG就是HappyNewYear!。 flag{HappyNewYear!}
【BUUCTF】REVERSE-刷题记录-内涵的软件
题目信息 解题步骤 IDA 分析后,第一步在 main 函数中 我们接下来跟进main_0 12345678910111213141516171819202122232425262728293031323334353637// 程序入口函数,标准main函数格式int __cdecl main_0(int argc, const char **argv, const char **envp){ char v4[4]; // 用于存储用户输入的字符(实际只用v4[0]) const char *v5; // 字符串指针,用于存储疑似flag int v6; // 倒计时计数器 v6 = 5; // 初始化倒计时从5开始 v5 = "DBAPP{49d3c93df25caad81232130f3d2ebfad}"; // 硬编码的flag // 倒计时循环:5,4,3,2,1,0 共6次 while (v6 >= 0) { printf(&byte_4250...
【Kali】让Kali虚拟机更好用
前言想必做网络安全的各位,Kali应该是大家必不可少的操作系统吧?如何快速使用Kali官网开箱即用的VM或者Hyper-V的镜像呢?本篇文章不讲如何安装,只讲如何优化。 优化过程修改root密码使用sudo passwd root修改root的密码,别忘了,默认的密码和用户是kali:kali。 更换更快的源123echo 'deb https://mirror.nju.edu.cn/kali kali-rolling main non-free contrib non-free-firmware# deb-src https://mirror.nju.edu.cn/kali kali-rolling main non-free contrib non-free-firmware' | sudo tee /etc/apt/sources.list 1sudo apt update 磁盘空间拓展默认是分配了80.1GB空间,在虚拟机设置增加到100g但是系统不会分配 1sudo fdisk /dev/sda 刷新分区状态:12sudo part...
【manjaro】让manjaro虚拟机更好用-sagemath篇
前言sagemath,各位大手子都应该知道吧? 安装过程设置软件源: 1sudo pacman-mirrors -i -c China -m rank 同步数据库:1sudo pacman -Syy 安装软件1sudo pacman -S vim sagemath jupyter-notebook 1sage -n jupyter # 启动jupyter的sage
【BUUCTF】CRYPTO-刷题记录-RSA1
题目信息 解题步骤 题目给出了如下信息: 12345p = 8637633767257008567099653486541091171320491509433615447539162437911244175885667806398411790524083553445158113502227745206205327690939504032994699902053229 q = 12640674973996472769176047937170883420927050821480010581593137135372473880595613737337630629752577346147039284030082593490776630572584959954205336880228469 dp = 650079570221683462110904235119326153065004384105625293093094966335862501688183284072806602615026469307610935487409984138045488171609777830726811691...
【BUUCTF】CRYPTO-刷题记录-Alice与Bob
题目信息 解题步骤 密码学历史中,有两位知名的杰出人物,Alice和Bob。他们的爱情经过置换和轮加密也难以混淆,即使是没有身份认证也可以知根知底。就像在数学王国中的素数一样,孤傲又热情。下面是一个大整数:98554799767,请分解为两个素数,分解后,小的放前面,大的放后面,合成一个新的数字,进行md5的32位小写哈希,提交答案。 注意:得到的 flag 请包上 flag{} 提交 寻找那对“命中注定”的素数给定的数字是: 198554799767 它看起来很大,但在现代计算面前,不过是小菜一碟。 如果这是 RSA 的模数 $n = p \times q$,那么 $p$ 和 $q$ 都是素数,且通常接近 $\sqrt{N}$。 于是我打开 Python,轻声说道:12345import mathN = 98554799767sqrt_N = int(math.isqrt(N))print(f"√N ≈ {sqrt_N}") 所以,我只需要从 313934 附近开始,向下寻找能整除 N 的素数。1234567p = sqrt_Nwhi...
【BUUCTF】REVERSE-刷题记录-reverse2
题目信息 解题步骤使用DIE分析: 使用IDA分析 12v8 = __readfsqword(0x28u); // Canary,防栈溢出pid = fork(); // 关键!创建子进程 fork() 的行为回顾 fork() 创建一个子进程,复制父进程的内存空间 子进程返回 0 父进程返回子进程 PID 之后两个进程独立运行 所以: 12if (pid) { /* 父进程 */ } else { /* 子进程 */ } flag 字符串到底被谁修改了?看这段代码: 12345678else{ for ( i = 0; i <= strlen(flag); ++i ) { if ( flag[i] == 105 || flag[i] == 114 ) flag[i] = 49; }} 105 → 'i' 114 → 'r' 49 → '1' 所以:子进程把 flag 中的 &#...
【BUUCTF】REVERSE-刷题记录-reverse1
题目信息 解题步骤 编译器为 MSVC 19.00,对应 Visual Studio 2015 或 2017 版本。 使用ida查看: 12345678for ( j = 0; ; ++j ){ v10 = j; if ( j > j_strlen(Str2) ) break; if ( Str2[j] == 111 ) Str2[j] = 48;} Str2 是一个字符串(全局变量或常量) 遍历 Str2,把所有字符 'o'(ASCII 111)替换成 '0'(ASCII 48) 条件是 j > j_strlen(Str2) 才跳出 → 实际是 j <= len 时继续 所以这是一个 字符串预处理:将 Str2 中的 o → 0 Str2 是“正确 flag”的模板,但被混淆了(用 o 代替 0) 12sub_1400111D1("input the flag:");sub_14001128F("%20s", Str1); sub_140...
【BUUCTF】REVERSE-刷题记录-easyre
题目信息 解题步骤先用DIE分析,发现是64位C程序 使用IDA分析: 也就是输入两个相同字符,就可以拿到flag 1flag{this_Is_a_EaSyRe}
【BUUCTF】PWN-刷题记录-ciscn_2019_n_1
题目信息 解题步骤 1234567[*] '/home/kali/Desktop/buuctf/ciscn_2019_n_1' Arch: amd64-64-little → 64位小端程序 RELRO: Partial RELRO → GOT表可写(可被劫持) Stack: No canary found → 无栈保护,可溢出 NX: NX enabled → 栈不可执行(不能直接执行shellcode) PIE: No PIE (0x400000) → 地址固定,无ASLR Stripped: No → 符号表未剥离,函数名可见 用 IDA 打开二进制文件,main 函数非常简单: 关键逻辑在 func(): v1[44]:输入缓冲区,位于 [rbp-0x30] v2:float 类型,位于 [rbp-0x4],初始值 0.0 使用 gets(v1) → ...











