[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
{
memset(&String, 0, 0xFFFFu); // memset函数将string初始化置0
GetDlgItemTextA(hDlg, 1000, &String, 0xFFFF);
if ( strlen(&String) == 8 ) // string的长度为8
{
v7 = 90;
v8 = 74;
v9 = 83;
v10 = 69;
v11 = 67;
v12 = 97;
v13 = 78;
v14 = 72;
v15 = 51;
v16 = 110;
v17 = 103;
sub_4010F0((int)&v7, 0, 10); // sub_4010F0是一个排序 升序的算法 ,
// 对v7数组进行处理后,v7的数据是
// 51 67 69 72 74 78 83 90 97 103 110
//
memset(&v26, 0, 0xFFFFu);
v26 = string[5];
v28 = string[7];
v27 = string[6];
v4 = sub_401000((int)&v26, strlen(&v26)); // sub_401000是base64加密算法,对v26进行了base64加密后复制给v4
memset(&v26, 0, 0xFFFFu); // v26清0
v27 = string[3];
v26 = string[2];
v28 = string[4];
v5 = sub_401000((int)&v26, strlen(&v26));
if ( String == v7 + 34 // string[0]='U'
&& string[1] == v11 // string[1]='J'
&& 4 * string[2] - 141 == 3 * v9 // string[2]='W'
&& string[3] / 4 == 2 * (v14 / 9) // string[3]='P'
&& !strcmp(v4, "ak1w") // V4=ak1w
&& !strcmp(
v5,
"V1Ax") )
{ // v5=V1Ax
MessageBoxA(hDlg, "U g3t 1T!", "@_@", 0);
}
}
return 0;
}
if ( (_WORD)a3 != 1 && (_WORD)a3 != 2 )
return 0;
EndDialog(hDlg, (unsigned __int16)a3);
return 1;
}
代码的大部分分析都写在注释里了,剩下的就是两个base64解密,用python3自带的base64库解密一下
根据这段代码,将string字符串理一下得到flag
flag{UJWP1jMp}
[BUUCTF]REVERSE——刮开有奖的更多相关文章
- BUUOJ reverse 刮开有奖
刮开有奖 这是一个赌博程序,快去赚钱吧!!!!!!!!!!!!!!!!!!!!!!!!!!!(在编辑框中的输入值,即为flag,提交即可) 注意:得到的 flag 请包上 flag{} 提交 拖到id ...
- [BUUOJ]刮开有奖reverse
刮开有奖 这是一个赌博程序,快去赚钱吧!!!!!!!!!!!!!!!!!!!!!!!!!!!(在编辑框中的输入值,即为flag,提交即可) 注意:得到的 flag 请包上 flag{} 提交 1.查壳 ...
- BUUCTF 刮开有奖 WriteUp
题目链接 https://buuoj.cn/challenges#%E5%88%AE%E5%BC%80%E6%9C%89%E5%A5%96 题解 用IDA打开,按F5反编译,双击进入DialogFun ...
- buu 刮开有奖
一.查壳, 二.拖入ida,分析 直接搜字符串完全没头绪,在看了大佬的wp才找到了,关键函数. 明显那个String就是我们要求的flag,要开始分析程序. 字符串长度为8,同时这个函数对字符串进行了 ...
- [BUUCTF]REVERSE——[GWCTF 2019]pyre
[GWCTF 2019]pyre 附件 步骤: 1.附件是pyc文件,用python打不开,百度后得知用python反编译工具打开,分享一个python反编译在线网站 反编译后是这段代码 #!/usr ...
- BUUCTF--刮开有奖
文件链接:https://buuoj.cn/files/abe6e2152471e1e1cbd9e5c0cae95d29/8f80610b-8701-4c7f-ad60-63861a558a5b.ex ...
- [BUUCTF]REVERSE——[ACTF新生赛2020]Oruga
[ACTF新生赛2020]Oruga 附件 步骤: 例行检查,64位程序,无壳 64位ida载入,检索字符串,根据提示来到关键函数 14行~18行就是让字符串的前5位是 actf{ ,sub_78A( ...
- [BUUCTF]REVERSE——firmware
firmware 附件 步骤: 检查文件没有看出什么,ida载入一堆乱码,看了其他师傅的wp才知道要先binwalk对文件进行提取 120200.squashfs这是一个linux的压缩文件 我们需要 ...
- [BUUCTF]REVERSE——[WUSTCTF2020]Cr0ssfun
[WUSTCTF2020]Cr0ssfun 附件 步骤: 例行检查,无壳儿,64位程序,直接ida载入,检索程序里的字符串,根据提示跳转 看一下check()函数 内嵌了几个检查的函数,简单粗暴,整理 ...
随机推荐
- [loj3014]独特的城市
约定:一棵树的深度定义为其中到根最远的点到根的距离 考虑节点$x$的答案: 任取一条直径,根据直径的性质,到$x$较远的直径端点一定是到$x$最远的点之一 由此,不难证明对于$x$独特的点,一定在$x ...
- [cf1495F]Squares
令$nex_{i}=\min_{i<j,p_{i}<p_{j}}j$(即$i$的第2类边),若不存在此类$j$则$nex_{i}=n+1$ 建一棵树,其以0为根,且$1\le i\le n ...
- HDC技术分论坛:HarmonyOS新一代UI框架的全面解读
作者:yuzhiqiang,UI编程框架首席技术专家 在Harmony 3.0.0开发者预览版中,包含了新一代的声明式UI框架ArkUI 3.0.多语言跨平台编译器ArkCompiler 3.0.跨端 ...
- 微信小程序中途加入云开发之坑
一开始未使用云开发的小程序项目,之后想使用云开发能力时,要先删除对应在开发者工具中的项目(先压缩备份源码!),再用开发者工具重新创建,很多时候都需要用这种方式进行处理
- APIO2020 打铁记
Day (-3) - 2020.8.11 马上要 APIO 了,不管三七二十一先刷一套历年的 APIO 再说. 花了 3h 写了 APIO2019,爆零150左右,然后查看了一下去年的分数线,Cu 1 ...
- [NOIP2018 提高组] 旅行
考虑如果我们要回溯的话,一定要把非环上的子树都搜索完. 而在环上的一个地方回溯,相当于把环上的下一个点置于所有环的顺序的最后. 所以我们只有在环上遇到环上的最大点时且周围的点都比这个点小时非正常回溯即 ...
- 一次forEach 中 await 的使用
forEach 和 await/async 的问题 最近在刷面试提的时候看见这样一道题 const list = [1, 2, 3] const square = num => { return ...
- 【shell】真正解决syntax error:unexpected end of file?
今天写了个较长的shell脚本,结构嵌套比较多,最后运行时,出现了syntax error: unexpected end of file的错误. 这个之前碰到过,经常在win系统转移脚本文件到uni ...
- DRF知识点总结
1. Web API接口 2. Restful接口规范 RDF请求流程及主要模块分析
- 一个好用的快速安装lnmp环境包lnmp1-6
一个好用的快速安装lnmp环境包lnmp1-6 地址:https://lnmp.org/tag/lnmp1-6/