![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
CTF-RE
文章平均质量分 68
re
Em0s_Er1t
none
展开
-
ISCC2021——wp
文章目录一、MISC(二)Retrieve_the_passcode(二)海市蜃楼-1(三)区块链(四)小明的宠物兔(五)小明的表情包二、Mobile(一)Mobile Normal(二)Mobile Easy三、Reverse(一)Garden(二)Analysis一、MISC(二)Retrieve_the_passcodeARCHPR不能破解RAR5.0版本的rar文件import numpy as npimport matplotlib.pyplot as pltfrom mpl_tool原创 2021-11-30 18:07:03 · 1634 阅读 · 0 评论 -
NCTF2021——wp
文章目录一、REHello せかいShadowbringer鲨鲨的秘密二、MISC做题做累了来玩玩游戏吧Hex酱的秘密花园Hello File Format一、REHello せかいida反编译,flag明文给出Shadowbringer那两个函数是2次base64变异码表的编码,函数反过来换两次码表解码一下就得到flag。鲨鲨的秘密SEH里面有反调试(直接nop),还有初始化表需要用到的key(dword_404E58)for循环里面边smc边执行,直接动调分析逻辑最后写exp如原创 2021-11-30 17:47:27 · 785 阅读 · 0 评论 -
buu-刮开有奖
32位窗口程序,用IDA打开,定位到一个主要函数DialogFunc,对函数的变量名重命名了一下,然后为了方便观察生成了一些数组,最终伪代码整理如下INT_PTR __stdcall DialogFunc(HWND hDlg, UINT a2, WPARAM a3, LPARAM a4){ const char *v4; // esi const char *v5; // edi int s[11]; // [esp+8h] [ebp-20030h] BYREF CHAR String[原创 2021-10-29 21:51:40 · 321 阅读 · 0 评论 -
buu CrackRTF
32位程序IDA反编译如下int __cdecl main_0(int argc, const char **argv, const char **envp){ DWORD v3; // eax DWORD v4; // eax char Str[260]; // [esp+4Ch] [ebp-310h] BYREF int v7; // [esp+150h] [ebp-20Ch] char String1[260]; // [esp+154h] [ebp-208h] BYREF原创 2021-10-29 21:30:04 · 166 阅读 · 0 评论 -
[SUCTF2018]babyre
题目:[SUCTF2018]babyreC++写的64位bin文件查找字符串定位到主函数__int64 sub_140012460(){ char *v0; // rdi __int64 i; // rcx char v3[48]; // [rsp+0h] [rbp-20h] BYREF char v4[32]; // [rsp+30h] [rbp+10h] char v5[184]; // [rsp+50h] [rbp+30h] BYREF char v6[60]; //原创 2021-05-05 22:52:39 · 795 阅读 · 2 评论 -
[BUU]HellScream
题目:[BUU]HellScream32位程序原创 2021-05-05 21:47:46 · 998 阅读 · 0 评论 -
[BUU]Dig the way
题目:[BUU]Dig the way32位main贴上主函数。int __cdecl main(int argc, const char **argv, const char **envp){ int result; // eax int v4; // ebx size_t v5; // eax int v6; // ebx char Str[20]; // [esp+1Ch] [ebp-48h] BYREF int v8[3]; // [esp+30h] [ebp-3原创 2021-05-04 00:22:19 · 398 阅读 · 1 评论 -
[GWCTF 2019]babyvm
题目:[GWCTF 2019]babyvm64位程序,好像是个vm题?ida64查看主函数void __fastcall __noreturn main(int a1, char **a2, char **a3){ __int64 v3[2]; // [rsp+10h] [rbp-10h] BYREF v3[1] = __readfsqword(0x28u); v3[0] = 0LL; puts("Please input something:"); sub_CD1(v3);原创 2021-05-03 20:47:20 · 1248 阅读 · 2 评论 -
[SUCTF2019]hardcpp
题目:[SUCTF2019]hardcpp64位ELF文件ida64中打开发现有两处控制流平坦化。装好angr,使用基于angr的脚本deflat.py去除控制流平坦化,在deflat.py所在目录下打开cmd命令行输入python deflat.py hardCpp 0x4007E0 #“python版本 + 脚本名 + 文件名 + 起始地址”第二处控制流平坦化同理去除。运行几分钟即可得到去除控制流平坦化之后的程序。如果原版deflat.py出错,可以试试优化之后的deflat原创 2021-05-03 01:30:36 · 924 阅读 · 2 评论 -
[NPUCTF2020]Baby Obfuscation
题目:[NPUCTF2020]Baby Obfuscation64位无壳程序int __cdecl main(int argc, const char **argv, const char **envp){ int v3; // eax int v4; // ebx int v5; // esi int v6; // ebx int v7; // ebx int v8; // esi int v9; // ebx int v10; // ebx int v11;原创 2021-05-02 22:39:11 · 605 阅读 · 0 评论 -
[BSidesSF2019]blink
题目:[BSidesSF2019]blinkapk文件,模拟器里面安装运行一下,发现闪退了。jeb打开,看到有个另类的r2d2类,定位一下。可以看到是给一串字符base64解码,然后传入setImageBitmap函数。关于setImageBitmap函数:Bitmap 首先是代表一个位图setImageBitmap是用来设置位图背景的函数package com.example.blink;import android.graphics.BitmapFactory;import原创 2021-05-02 16:33:03 · 607 阅读 · 0 评论 -
[羊城杯 2020]login + pyinstaller细节解包
题目:[羊城杯 2020]loginpyinstaller打包后的64位程序。一、pyinstaller解包【参考看雪论坛的发帖】(一).exe——>.pyc方法1:PyInstaller Extractor用PyInstaller Extractor解包把pyinstxtractor.py和attachment.exe文件放在同个目录下打开cmd,进入该目录,输入:python pyinstxtractor.py attachment.exe这里有个值得注意的地方就是执行这个原创 2021-04-29 17:57:47 · 1436 阅读 · 2 评论 -
[2019红帽杯]Snake
题目:[2019红帽杯]Snake0x01 分析程序是个unity游戏。把Snake\Snake_Data\Managed目录下的Assembly-CSharp.dll放到dnSpy里面反汇编看看,发现了导入外部interface动态链接库,且GameObject主函数就在这个库中。现在来看看这个函数是如何被使用的,选中GameObject函数,右键点击分析,弹出的分析器中双击可以看出向这个函数传入了一个坐标参数。找到Plugins下的Interface64位ida64查看,在str原创 2021-04-28 18:47:15 · 509 阅读 · 0 评论 -
[UTCTF2020]babymips
题目:[UTCTF2020]babymipsIDA32中查看伪代码int __cdecl main(int argc, const char **argv, const char **envp){ int v3; // $v0 char v5[24]; // [sp+18h] [+18h] BYREF char v6[24]; // [sp+30h] [+30h] BYREF char v7[84]; // [sp+48h] [+48h] BYREF std::__cxx11:原创 2021-04-29 12:32:52 · 557 阅读 · 1 评论 -
[HDCTF2019]MFC
题目:[HDCTF2019]MFC是个MFC写的VMProtect保护的32位程序。打开分析MFC事件处理函数的工具xspy,同时打开待分析的mfc程序,放大镜拖至待分析程序的窗口。下图我们可以注意到有一个消息并不是以宏的形式出现,应该是个作者自定义的消息,难怪怎么点击啥的都无法触发。写个程序向MFC程序发送这个消息即可。用FindWindow函数获取窗口句柄。SendMessage函数发送消息。#include<Windows.h>#include<stdio.h原创 2021-04-28 22:35:41 · 775 阅读 · 2 评论 -
[CISCN2018]2ex
题目:[CISCN2018]2ex32位无壳,gcc编译,MIPS从这个函数看出是变态base64码表。int __fastcall sub_400430(int a1, unsigned int a2, int a3){unsigned int v3; // $v0int v4; // $v0int v5; // $v0int v6; // $v0unsigned int i; // [sp+8h] [+8h]unsigned int v9; // [sp+8h] [+8h]int原创 2021-04-22 21:21:17 · 681 阅读 · 0 评论 -
[ACTF新生赛2020]Splendid_MineCraft
题目:[ACTF新生赛2020]Splendid_MineCraft32位无壳程序初步静态分析老样子,ida32进去看主函数。有提示输入错误的字串,但没有提示输入正确的字串。瞄了一眼流程图(发现有个突出的独立分支),引起了我的怀疑。红框部分的细节如下:原来那个提示正确的字串在这个独立分支上,光标放在红框,再按tab看伪代码,发现显示在主函数的这个区域。在这个区域我们又找到意想不到的收获。推测是smc没错了。接下来具体分析主函数:strtok函数:函数原型:char *原创 2021-04-22 20:37:22 · 916 阅读 · 0 评论 -
[watevrCTF 2019]Timeout
题目:[watevrCTF 2019]Timeout64位无壳.com文件?拖到ida64看看反汇编不出来。但拖入ida64时显示了elf,去掉后缀改成elf应该就可以正常显示汇编代码了。查看main函数代码如下:int __cdecl main(int argc, const char **argv, const char **envp){ signal(14, sig); alarm(1u); delay(6000000LL); can_continue = 1337原创 2021-04-22 11:49:58 · 650 阅读 · 0 评论 -
[WMCTF2020]easy_re
题目:[WMCTF2020]easy_re64位无壳程序。先在ida64里打开,发现找不到“please input the flag:”字符串,别的提示字符串也找不到,再看文件名perl,选择网上搜索这个名词,但只了解到perl是个脚本语言,推测是在程序运行过程中这些字符串才会显现出来,我目前所见过的能实现这样操作的也就SMC,但这题应该不是,可能是新的反静态分析的技术。本能想到用X64dbg动态调试。一键F9看它跑到哪里。它停在了entrypoint处,看不出什么。为了找到那个字符串但原创 2021-04-22 11:19:07 · 802 阅读 · 0 评论 -
[羊城杯 2020]Bytecode
题目:[羊城杯 2020]Bytecode拿到手竟然是个txt文件,打开后发现里面是python的字节码查文档反编译出来的python脚本如下:en = [3,37,72,9,6,132]output = [101,96,23,68,112,42,107,62,96,53,176,179,98,53,67,29,41,120,60,106,51,101,178,189,101,48]flag = raw_input('please input your flag:')str = flaga原创 2021-04-21 21:15:59 · 617 阅读 · 1 评论 -
[SCTF2019]Who is he
题目:[SCTF2019]Who is he解压之后发现是unity,但这不是最主要的,主要是。。。预感到最后的flag肯定很有意思,以至于差点忘记了自己相对不擅长unity逆向这个事实。我们进入正题:正题第一步当然是Reflector查看Assembly-CSharp.dll动态链接库文件。我们现在定位加密函数的位置,查找一下字符串“Emmmm”双击进入public class TestClick : MonoBehaviour{ // Fields private原创 2021-04-21 20:13:26 · 697 阅读 · 2 评论 -
[羊城杯 2020]easyre
题目:[羊城杯 2020]easyre64位无壳程序ida64打开查看伪代码:int __cdecl main(int argc, const char **argv, const char **envp){ int v3; // eax int v4; // eax int v5; // eax int result; // eax char Str[48]; // [rsp+20h] [rbp-60h] BYREF char Str1[64]; // [rsp+50h]原创 2021-04-21 15:45:26 · 1029 阅读 · 0 评论 -
[FlareOn2]very_success
题目来源:[FlareOn2]very_success确定是32位无壳程序放入静态分析工具ida32里查看:发现栈指针不平衡,"alt + k"手动调节一下,加个负号即可:调节好之后查看伪代码:BOOL __usercall sub_401000@<eax>(int a1@<ebp>){ BOOL result; // eax HANDLE v2; // [esp-14h] [ebp-14h] HANDLE v3; // [esp-10h] [ebp-1原创 2021-04-21 14:22:34 · 955 阅读 · 2 评论 -
[MRCTF2020]EasyCpp
题目:[MRCTF2020]EasyCpp这题是一个用g++编译的C++逆向题,第一次碰到这种类型,边做边学习吧。因为是初次接触C++逆向,如有不足,欢迎评论区指正。一、mainIDA64查看main函数的伪代码如下,各个反汇编后伪代码的注释也已经给出,仅供参考:int __cdecl main(int argc, const char **argv, const char **envp){ __int64 v3; // rax __int64 v4; // rbx __int6原创 2021-04-20 21:25:05 · 874 阅读 · 2 评论 -
[2019红帽杯]childRE
小白一枚,膜拜大佬,欢迎指正总结二叉树实现输入字符串的置换。C++函数名修饰。MD5加密IDA动态调试求outstring得出outstring=‘private: char * __thiscall R0Pxx::My_Aut0_PWN(unsigned char *)’贴上我的exp:a=list('(_@4620!08!6_0*0442!@186%%0@3=66!!974*3234=&0^3&1@=&0908!6_0*&')b=list('55.原创 2021-04-17 18:33:05 · 242 阅读 · 0 评论 -
[GUET-CTF2019]encrypt
小白一枚,膜拜大佬,欢迎指正exeinfope看一下,是64位无壳程序导入ida64分析,贴上主函数伪代码:__int64 __fastcall main(int a1, char **a2, char **a3){ unsigned int v3; // eax unsigned int v4; // eax char v6[4]; // [rsp+4h] [rbp-93Ch] BYREF int i; // [rsp+8h] [rbp-938h] int v8; // .原创 2021-04-17 18:06:37 · 1379 阅读 · 1 评论 -
[RoarCTF2019]polyre
一、难点:• 控制流平坦化; 【相关资料请参考[利用符号执行去除控制流平坦化](https://security.tencent.com/index.php/blog/msg/112)】• 用idapython去除虚假控制流程;• CRC算法;二、具体步骤:1.控制流去平坦化:装好angr,使用脚本deflat.py去除控制流平坦化,deflat.py所在目录下打开cmd命令行输入python deflat.py attachment.exe 0x400620 #python版本 +原创 2021-04-17 00:10:23 · 668 阅读 · 2 评论 -
[SCTF2019]babyre
exeinfope打开发现是64位无壳程序ida64打开,搜索关键字符串进入目标字符串的汇编窗口我们发现无法F5,发现了几处反ida调试,总结有两种类别:下面是第一种,我们直接把jb和jnb这两行改成nop。下面是第二种,所有都改完之后,从main开头到retn选中按p申明成一个新函数,就可以F5了反汇编代码如下:__int64 __fastcall main(int a1, char **a2, char **a3){ __int64 result; // rax uns原创 2021-04-16 23:31:16 · 1506 阅读 · 0 评论 -
[QCTF2018]Xman-babymips
exeinfope打开,为32位程序。ida32打开后发现是MIPS指令集。Ida7.5(ida7.0需要额外加插件)直接F5一键反编译。如下:双击查看fdata,这里是判断输入格式的,重点还是看sub_4007F0函数。直接双击进入sub_4007F0(v5)函数,加密过程很容易就能看出是循环移位操作:查看关键字符串Off_410D04如下:接下来就可以写exp了,注意要防止移位过程中的溢出:a=[0x52,0xfd,0x16,0xa4,0x89,0xbd,0x92,0x80,0x原创 2021-04-13 22:19:26 · 747 阅读 · 0 评论 -
[网鼎杯 2020 青龙组]bang
拿到手是一个APK文件,模拟器里打开看一下:接下来是查壳,apk查壳我们用PKID(点此下载,密码: wefd)PKID使用方法:安装目录下输入 javaw -jar APKScan-PKID.jar显示是梆梆加壳,接下来我们用frida脚本脱壳,使用该脚本前需要配置frida环境,参考我另一篇博文,集各家之长,亲测有效在frida_dexdump目录下cmd输入python main.py之后我们发现frida_dexdump新建了子文件夹com.example.how_debug原创 2021-04-15 16:30:03 · 792 阅读 · 0 评论 -
[SCTF2019]creakme
这题用到的知识点很多,我们先一步步分析。首先看主函数:int __cdecl main(int argc, const char **argv, const char **envp){ HMODULE v3; // eax int v4; // eax _DWORD *v5; // eax unsigned int v6; // edx _DWORD *v7; // ecx unsigned int v8; // ebx char *v9; // edi unsigne原创 2021-04-14 22:29:47 · 927 阅读 · 0 评论