BUUCTF RE 刮开有奖wp

在这里顺便学习了一下与 WinMain 函数有关的一些知识Win Main 百度百科 以及 WinMain函数参数介绍

用ida32位打开文件
进入主函数WinMain在这里插入图片描述
找到主函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
字符串解析
通过代码
GetDlgItemTextA(hDlg, 1000, &String, 0xFFFF);
知道了String是我们输入的flag。

通过代码
if ( strlen(&String) == 8 )
我们知道flag的长度应该是8
第51行函数sub_4010F0(&v7, 0, 10)
进入sub_4010F0函数
在这里插入图片描述
C语言编写代码:
#include
using namespace std;
//v7,0,10
int sub(char a1[],int a2,int a3){
int result;
int i;
int v5;
int v6;
result = a3;
for ( i = a2; i <= a3; a2 = i )
{
v5 = i;
v6 = a1[i];
if ( a2 < result && i < result )
{
do
{
if ( v6 > a1[result] )
{
if ( i >= result )
break;
++i;
a1[v5] = a1[result];
if ( i >= result )
break;
while ( a1[i]<= v6 )
{
if ( ++i >= result )
goto LABEL_13;
}
if ( i >= result )
break;
v5 = i;
a1[result] = a1[i];
}
–result;
}
while ( i < result );
}
LABEL_13:
a1[result] = v6;
sub(a1, a2, i - 1);
result = a3;
++i;
}
return result;
}
int main(int argc, const char *argv[]) {
char a[30]={90, 74, 83, 69, 67, 97, 78, 72, 51, 110, 103};
sub(a,0,10);
cout<<a<<endl;
return 0;
}
运行结果如下
在这里插入图片描述
分析56行,双击观察v23
在这里插入图片描述
可知v23为string[5],快捷键N依次修改
在这里插入图片描述
继续分析sub_401000函数
在这里插入图片描述
在这里插入图片描述
由上图可知此函数为base64加密,返回关键函数
由69行,70行可知有两段字符串加密后得到ak1w,V1Ax,解密得 jMpWP1

  if ( String == v9 + 34                    // sub_4010F0函数后的第一位等于51+34=85-->'U'
    && v21 == v13                           // 第2位,等于v13,即sub_4010F0函数返回值的第5位值-->'J'
    && 4 * v22 - 141 == 3 * v11
    && v23 / 4 == 2 * (v16 / 9)
    && !strcmp(v6, "ak1w")                  // 第6,7,8行代码base64之后,需要等于"ak1w"
    && !strcmp(                             // 第3,4,5行代码,加密之后等于V1Ax
          v7,
          "V1Ax") )
  {
    MessageBoxA(hDlg, "U g3t 1T!", "@_@", 0);
  }

将v6,v7解密之后得到WP1jMp,再结合第1,2位得到flag

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值