[BUUCTF]REVERSE——刮开有奖】的更多相关文章

刮开有奖 附件 步骤: 例行检查,无壳,32位程序 32位ida载入,shift+f12检索程序里的字符串,看到了一个base64加密的特征字符串,猜想这题用到了base64加密 从main函数开始看程序 DialogBoxParam函数百度后得知是根据对话框模板资源创建一个模态的对话框,直接看函数主体 if ( a2 == 272 ) return 1; if ( a2 != 273 ) return 0; if ( (_WORD)a3 == 1001 ) // a3=1001 { memse…
刮开有奖 这是一个赌博程序,快去赚钱吧!!!!!!!!!!!!!!!!!!!!!!!!!!!(在编辑框中的输入值,即为flag,提交即可) 注意:得到的 flag 请包上 flag{} 提交 拖到ida 找到关键函数: BOOL __stdcall DialogFunc(HWND hDlg, UINT a2, WPARAM a3, LPARAM a4) { const char *v4; // esi const char *v5; // edi int v7; // [esp+8h] [ebp…
刮开有奖 这是一个赌博程序,快去赚钱吧!!!!!!!!!!!!!!!!!!!!!!!!!!!(在编辑框中的输入值,即为flag,提交即可) 注意:得到的 flag 请包上 flag{} 提交 1.查壳 2.分析(IDA32) BOOL __stdcall DialogFunc(HWND hDlg, UINT a2, WPARAM a3, LPARAM a4) { const char *v4; // esi const char *v5; // edi int v7; // [esp+8h] […
题目链接 https://buuoj.cn/challenges#%E5%88%AE%E5%BC%80%E6%9C%89%E5%A5%96 题解 用IDA打开,按F5反编译,双击进入DialogFunc函数. 代码如下: 1 BOOL __stdcall DialogFunc(HWND hDlg, UINT a2, WPARAM a3, LPARAM a4) 2 { 3 const char *v4; // esi 4 const char *v5; // edi 5 int v7; // [e…
一.查壳, 二.拖入ida,分析 直接搜字符串完全没头绪,在看了大佬的wp才找到了,关键函数. 明显那个String就是我们要求的flag,要开始分析程序. 字符串长度为8,同时这个函数对字符串进行了处理,点击进去,贼复杂,拖入编译器执行,看看 #include<bits/stdc++.h> using namespace std; char a[]={'Z', 'J','S','E','C','a','N','H','3','n','g'}; int sub_4010F0(char a[],…
[GWCTF 2019]pyre 附件 步骤: 1.附件是pyc文件,用python打不开,百度后得知用python反编译工具打开,分享一个python反编译在线网站 反编译后是这段代码 #!/usr/bin/env python # visit http://tool.lu/pyc/ for more information print 'Welcome to Re World!' print 'Your input1 is your flag~' l = len(input1) #输入字符串…
文件链接:https://buuoj.cn/files/abe6e2152471e1e1cbd9e5c0cae95d29/8f80610b-8701-4c7f-ad60-63861a558a5b.exe?token=eyJ0ZWFtX2lkIjpudWxsLCJ1c2VyX2lkIjoxOTAzLCJmaWxlX2lkIjoyMDd9.XXT5Dg.7mQMViMZzaEYSVj_dfXyRr4aPKQ 1.准备 获取信息 32位文件 2.IDA打开 进入主函数WinMain int __std…
[ACTF新生赛2020]Oruga 附件 步骤: 例行检查,64位程序,无壳 64位ida载入,检索字符串,根据提示来到关键函数 14行~18行就是让字符串的前5位是 actf{ ,sub_78A()是关键函数,分析可知应该是迷宫 byte_201020(推荐在16进制界面查看),查看迷宫图形 这个移动方法有点意思,从左上角去往!,点代表路,其他符号是障碍物,点的时候会一直走,遇到障碍物才会停下,手动走一下 flag{MEWEMEWJMEWJM}…
firmware 附件 步骤: 检查文件没有看出什么,ida载入一堆乱码,看了其他师傅的wp才知道要先binwalk对文件进行提取 120200.squashfs这是一个linux的压缩文件 我们需要firmware-mod-kit工具来进行解压. firmware-mod-kit工具:传送门 安装步骤: sudo yum install git build-essential zlib1g-dev liblzma-dev python-magic git clone https://githu…
[WUSTCTF2020]Cr0ssfun 附件 步骤: 例行检查,无壳儿,64位程序,直接ida载入,检索程序里的字符串,根据提示跳转 看一下check()函数 内嵌了几个检查的函数,简单粗暴,整理一下字符串,就是flag flag{cpp_@nd_r3verse_@re_fun}…
[FlareOn6]Overlong 附件 步骤: 例行检查,32位程序,不懂是个啥 32位ida载入,main函数很简单 处理函数 sub_401000 程序只对unk_402008的28位进行了处理,但是我看unk_402008并不止28位,实际长度是0xaf(0xb7-0x8) 运行了一下附件,发现弹框里的数据长度也是28,结尾是:,让人总觉得后面还有东西 将长度修改一下,让他将unk_402008完全处理一下看看,ida修改了不会保存,od动调修改需要将0x1c压入栈中,在栈中修改,我一…
[WUSTCTF2020]level3 附件 步骤: 例行检查,64位程序,无壳 64位ida载入,找到关键函数 看样子是个base64加密,但又感觉没那么简单,再翻翻左边的函数,找到了base64加密变表的函数 将加密表变换一下写个解密exp import base64 table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=' model = list("ABCDEFGHIJKLMNOPQRSTUVW…
[MRCTF2020]hello_world_go 附件 步骤: 例行检查,64位程序,无壳 64位ida载入,检索程序里的字符串,有很多,直接检索flag 一个一个点过去,找到了flag 按a,提取字符串 flag{hello_world_gogogo}…
[GKCTF2020]BabyDriver 附件 步骤: 例行检查,64位程序,无壳 64位ida载入,检索程序里的字符串,看到提示flag是md5(input),下方还看到了类似迷宫的字符串 找到关键函数 从o出发到#结束,碰到*失败,只能走'.',但是这个上下左右md5加密出来的东西不对 看了别人的wp才知道这里由于是sys文件,是由键盘过滤驱动获取键盘扫描码来控制上下左右,而不是ascll码 所以刚刚的上下左右对应的是IKJL 画出迷宫,走一下顺序是LKKKLLKLKKKLLLKKKLLL…
[MRCTF2020]Xor 附件 步骤: 例行检查,32位程序,无壳 32位ida载入,首先检索程序里的字符串,根据字符串的提示,跳转到程序的关键函数 根据flag,跳转到sub_401090函数 可以看到v0和byte_4212c0按位异或,最后得到byte_41EA08就会输出right 看一下byte_41EA08的值 直接写个异或的exp看一下byte_4212c0里的值 a="MSAWB~FXZ:J:`tQJ\"N@ bpdd}8g" s=""…
[FlareOn4]IgniteMe 附件 步骤: 例行检查,32位程序,无壳 32位ida载入 当满足第10行的if条件时,输出G00d j0b!提示我们成功,看一下sub_401050函数 3.sub_401050函数 byte_403180经过10~14行的操作后的值与byte_403000数组相同 v4的值,不大懂这个的结果是什么,动调后看到是0x4 v4返回的是一个定值,动态调试就能出来,v0就是接收函数的整的花里胡哨. 理一下,程序对我们输入的字符串,最后一个字符xor 0x4,然后…
crackMe 附件 步骤: 例行检查,32位程序,无壳 32位ida载入,已知用户名welcomebeijing,解密码,直接看main函数 可以看到程序是个死循环,只有满足sub_404830函数的条件,才能跳出循环 sub_404830函数里要让sub_404830函数返回1,必须要让v13=43924,v13经过了sub_401470的变换,先看sub_401470函数 _DWORD *__usercall sub_401470@<eax>(int a1@<ebx>, _B…
[WUSTCTF2020]level2 附件 步骤: 例行检查,32位程序,upx壳儿 脱完壳儿,扔进32位ida,习惯性的检索字符串,在我没找到什么关键信息,准备去看main函数的时候,将字符串拉到底,看到了一个眼熟的东西 wctf2020{Just_upx_-d}…
[BJDCTF2020]BJD hamburger competition 附件 步骤: 例行检查,64位程序,无壳儿 由于unity是用C++开发的,这里就不用IDA了,直接用dnspy看源码 在BJD hamburger competition_Data\Managed文件夹中找到Assembly-CSharp.dll(进去文件后第一个就是) 这个dll文件是程序的源码,用来存放C++工程. 试运行了一下程序,发现进去后我们可以点击一些"食材",在dnspy里找到有用的Button…
[WUSTCTF2020]level1 附件 步骤: 下载下来的附件有两个,output.txt里是一堆数字 64位ida打开第一个附件,检索字符串,发现了flag字样 双击跟进,ctrl+x交叉引用,找到了关键函数 程序很简单,一开始打开flag文件读出了flag文件里的内容,之后将里面的内容按照12行到18行的语句进行处理后输出. 附件里还有一个文件,output.txt,猜测就是输出后的内容,将里面的数据根据这个算法还原一下flag里的内容 exp a = [198,232,816,200…
[HDCTF2019]Maze 附件 步骤: 例行检查,32位程序,upx壳 upx脱壳儿后扔进32位ida,首先检索程序里的字符串 有类似迷宫的字符串,下面也有有关flag的提示字符串,但是没法进行交叉引用跳转 查看main函数,没法f5,看汇编,下方有个奇怪的jnz指令,它跳转到了下一行,相当于没跳 它call了一个奇怪的地址,ida没法分析出来,百度后得知这个叫花指令,nop掉 之后就是这个call指令,不能全部nop,因为后面那个东西可能是有效代码(我先全部nop掉了没法f5).按d将其…
[V&N2020 公开赛]CSRe 附件 步骤: 例行检查,无壳儿,但是有NET混淆,使用de4dot工具进行处理 之后用dnSpy打开,从入口点开始看程序 找到有关flag的信息 flag由str+text组成 str根据if (Class3.smethod_0("3" + str + "9") != "B498BFA2498E21325D1178417BEA459EB2CD28F8")可以推算出来 看一下Class3.smethod_…
[MRCTF2020]Transform 附件 步骤: 例行检查,64位程序,无壳 64位ida载入,找到关键函数 一开始让我们输入一个长度为33位的字符串,之后使用数组dword_40F040打乱了我们一开始输入的v6的值,打乱后的结果在与dword_40F040异或之后得到byte_40F0E0数组里的值 理清楚程序干了什么直接写逆向算法 首先将dword_40F040和byte_40F0E0异或一下得到打乱后的输入的字符串 之后将打乱的字符串还原回去即可得到输入的字符串 dword_40F…
[GWCTF 2019]xxor 附件 步骤: 无壳,64位ida载入 程序很简单,首先让我们输入一个字符串,然后进行中间部分的操作,最后需要满足44行的if判断,看一下sub_400770函数 得到几个关系式 a1[2] - a1[3] = 2225223423 a1[3] + a1[4] = 4201428739 a1[2] - a1[4] = 1121399208 a1[0] = 3746099070 a1[5] = 550153460 a1[1] = 550153460 利用z3求解器求…
[ACTF新生赛2020]usualCrypt 附件 步骤: 例行检查,无壳,32位程序 32位ida载入,直接看main函数 逻辑很简单,一开始让我们输入一个字符串,然后该字符串经过sub_401080()函数加密,加密后得到byte_40E0E4里面的数据zMXHz3TIgnxLxJhFAdtZn2fFk3lYCrtPC2l9 看一下sub_401080函数 头部有一个sub_401000函数,中间看运算特征码可以判断是base64加密,尾部一个sub_401030函数 先从sub_4010…
[BJDCTF2020]easy 附件 例行检查,无壳,32位程序 32位ida载入,main函数和字符串理都没有找到有关flag的提示 根据main函数的提示,有关flag的函数应该被藏起来了,在左边的函数列表里一个一个查看,看到quess的函数长得有的像 给了10个数据,每两个数据进行一次变换,变换后长度为50,之后应该是对处理好后的数据进行按位判断,是1输出'*',否则输出' 空格 ',估计对处理后的数据转换成了2进制 32行到46行的处理数据里有些函数看不大懂,百度后发现是宏定义 所以我…
[V&N2020 公开赛]strangeCpp 附加 步骤 查壳,无壳,64位程序 64位ida载入,没有main函数,根据程序里的字符串,去查看函数 __int64 __fastcall sub_140013AA0(__int64 a1, __int64 a2, __int64 *a3) { char *v3; // rdi signed __int64 i; // rcx __int64 v5; // rax __int64 v6; // rax __int64 v7; // rax __i…
[GUET-CTF2019]re 附件 步骤: 查壳儿,upx壳,64位程序 upx脱壳儿,然后扔进64位ida,通过检索字符串,找到有关flag的信息定位到关键函数 让我们输入flag,然后满足sub_4009AE函数提示correct! 看一下sub_4009AE函数 对我门输入的flag字符串每一位*一个数据,然后进行了判断,除一下就可以算出flag的每一位 exp: a1 = chr(166163712 // 1629056) a2 = chr(731332800 // 6771600)…
[FlareOn4]login 附件 步骤: 是个网页,直接打开,查看网页源码 百度了几个函数 charCodeAt(0)是返回当前字符的Unicode 编码 String.fromCharCode返回Unicode对应的字符串 然后顺便了解到var rotFlag = flag.replace(/[a-zA-Z]/g, function(c){return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCo…
[ACTF新生赛2020]rome 附件 步骤 无壳,32位程序 32位ida载入,根据提示字符串"You are correct!",找到关键函数func v15 = 'Q'; v16 = 's'; v17 = 'w'; v18 = '3'; v19 = 's'; v20 = 'j'; v21 = '_'; v22 = 'l'; v23 = 'z'; v24 = '4'; v25 = '_'; v26 = 'U'; v27 = 'j'; v28 = 'w'; v29 = '@'; v…