Category: ctf

巅峰极客 逆向题 Simple Base-N write up

环境配置 系统 : win10 64bit 程序 : Simple Base-N.exe 要求 : 输入口令 使用工具 :ida pro 开始分析 静态分析 在ida中查看main函数: int __cdecl main(int argc, const char **argv, const char **envp) { const char *v3; // ecx char *v4; // eax bool v5; // cf unsigned __int8 v6; // dl int v7; // eax int v9; // eax […]

分析一个二元函数加密的cm

环境配置 系统 : win10 64bit \ Linux kali 4.15.0-kali2-amd64 程序 : cztria-1.rar 要求 : 写出注册机 使用工具 :ida pro \ kail 自带的字典 \ peid 开始分析 拿信息 使用peid查看exe的信息: MASM32 / TASM32 显示是用了汇编语言写的,还挺复杂,而且这说明不能完全相信ida里F5出来的结果,必要时还是要人工分析关键的汇编代码。 静态分析 使用ida打开文件,等待分析完成后查看字符串列表(Shift + F12): Address Length Type String .rdata:0040223C 0000000D C KERNEL32.DLL .rdata:00402249 0000000A C GDI32.dll .rdata:00402253 0000000C C SHELL32.dll .rdata:0040225F 0000000B C USER32.dll .data:00403000 […]

安恒杯月赛 2019-01 Old-drive write up

环境配置 系统 : win10 64bit 程序 : Old-drive.zip or Old-drive.zip 要求 : 输入口令 使用工具 :ida pro 开始分析 静态分析 使用ida载入程序,发现主流程如下: int __cdecl main(int argc, const char **argv, const char **envp) { int i; // ecx signed int v4; // eax char v6; // [esp+0h] [ebp-40h] char Dst; // [esp+1h] [ebp-3Fh] char v8; // [esp+27h] [ebp-19h] int […]

强网先锋 ad(c) write up

环境配置 系统 : Linux kali 4.15.0-kali2-amd64 \ win10 64bit 程序 : task_qwxf_DS0zYpc 要求 : 输入口令 使用工具 :ida pro 开始分析 拿信息 文件拿到手直接改权限运行: ➜ playground chmod 744 task_qwxf_DS0zYpc ➜ playground ./task_qwxf_DS0zYpc === Strong Network Pioneer === 123 you’re not 要求输入一个字符串。 静态分析 ida载入程序,主流程如下: __int64 __fastcall main(__int64 a1, char **a2, char **a3) { char v4[128]; // [rsp+0h] [rbp-150h] char […]

强网杯 webassembly_write_up

环境配置 系统 : Linux kali 4.15.0-kali2-amd64 \ win10 64bit 程序 : task_webassembly3.tar_WAOLbMu 要求 : 输入口令 使用工具 :wabt / ida pro 开始分析 拿信息 二进制文件下载后使用rar解压出三个文件,使用wabt项目构建能被ida识别的o文件: ./wasm2c webassembly.wasm -o wasm.c gcc -c wasm.c -o wasm.o 静态分析 ida载入程序,主流程如下: int __cdecl main(int argc, const char **argv, const char **envp) { unsigned int v3; // ST1C_4 unsigned int v4; // ST18_4 […]

强网杯 JustRe write up

环境配置 系统 : Linux kali 4.15.0-kali2-amd64 \ win10 64bit 程序 : JustRe.exe 要求 : 输入口令 使用工具 :x64dbg / ida pro / peid 开始分析 拿信息 二进制文件下载后使用file拿信息: ➜ playground file task_JustRe3.tar.gz task_JustRe3.tar.gz: gzip compressed data, last modified: Wed May 22 01:39:26 2019, from Unix 发现是压缩包,解压之: tar -xzvf task_JustRe3.tar.gz 解压出来一个exe文件,使用peid拿信息: Microsoft Visual Studio .NET 2005 — 2008 -> […]

2018强网杯simplecheck write_up

环境配置 系统 : Linux kali 4.15.0-kali2-amd64 \ win10 64bit 程序 : simplecheck_1982yrejnxy2189236t4c7816025789346dx1h782635789cb12653 要求 : 输入口令 使用工具 :ApkToolBox Studio(APK反编译工具集) v1.6.4免费版 include(jadx and dex2jar) 开始分析 拿信息 使用file命令拿信息: ➜ playground file simplecheck_1982yrejnxy2189236t4c7816025789346dx1h782635789cb12653 simplecheck_1982yrejnxy2189236t4c7816025789346dx1h782635789cb12653: Zip archive data, at least v2.0 to extract 发现是一个zip文件,那么直接解压看看: ➜ playground unzip ./simplecheck_1982yrejnxy2189236t4c7816025789346dx1h782635789cb12653 Archive: ./simplecheck_1982yrejnxy2189236t4c7816025789346dx1h782635789cb12653 inflating: AndroidManifest.xml inflating: META-INF/CERT.RSA inflating: META-INF/CERT.SF inflating: META-INF/MANIFEST.MF inflating: classes.dex […]

从2018强网杯hide题中学习手动脱壳与算法识别的思路

环境配置 系统 : Linux kali 4.15.0-kali2-amd64 \ win10 64bit 程序 : hide 要求 : 输入口令 使用工具 :ida 开始分析 粗略观察 使用file命令拿信息: ➜ playground file ./hide ./hide: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, stripped 没什么特殊的,接下来使用strings命令拿信息: ➜ playground strings hide # 省略大部分字串 UPX! UPX! 发现upx字样,所以这里应该是加了upx壳保护。 手动脱壳 使用upx命令脱壳: ➜ playground upx -d hide Ultimate Packer […]

一道油田ctf比赛的算法逆向题解

环境配置 系统 : Linux ubuntu 4.4.0-116-generic \ win10 64bit 程序 : encry_algo 要求 : 输入口令 使用工具 :ida \ pysm4 开始分析 静态分析 使用ida载入程序: signed int __cdecl sub_804934A(int a1) { int v1; // eax //省略部分代码 qmemcpy(&v8, “Please input your flag: “, 0x190u); v1 = sub_805C180(&v8); printf_806E0A0(1, (int)&v8, v1); scanf_806E030(0, (int)&my_str, 16); sub_8049076(&v7, (int)&v12); sub_804911A((int)&v7, 1, 16, (char […]

网鼎杯CTF Martricks

环境配置 系统 : Linux kali 4.6.0-kali1-amd64 程序 : 1.1 要求 : 输入口令 使用工具 :ida \ angr \ z3 解法一 主要流程 使用ida了解程序结构如下: __int64 __fastcall main(__int64 a1, char **a2, char **a3) { unsigned __int8 v4; // [rsp+Bh] [rbp-E5h] signed int v5; // [rsp+Ch] [rbp-E4h] signed int v6; // [rsp+10h] [rbp-E0h] int v7; // [rsp+14h] [rbp-DCh] signed int […]