攻防世界 srm-50 wp

srm-50(学汇编到自闭后做的水题

  1. 拿到exe文件先查壳
    在这里插入图片描述
    无壳
  2. 丢入IDA中
    在这里插入图片描述
    首先这里是winmain(),关于这个先普及一下知识
    在这里插入图片描述
    因此相关代码与DialogFunc相关

以上定义是我在做完此题后问的度娘,在做时并不清楚这些。
在这里插入图片描述
我们可以直接shift+F12查找字符串address进入DialogFunc中

进入后进行F5反编译后发现
在这里插入图片描述
我猜测第一个if应该是与E-Mail有关,随后在输入框中输入
在这里插入图片描述
因此密码应该与第二个if有关,写脚本得flag(此处编译器我是用的Dev C++5.11,经过我的测试,如果用VC++6.0或VC++2010这种写法会有问题,可能原因应该是VC编译器对全局变量有一些优化,导致变量地址不连续或改变)

#include<bits/stdc++.h>
using namespace std;
char v11[4]; // [esp+108h] [ebp-240h]
char v12; // [esp+10Ch] [ebp-23Ch]
char v13; // [esp+10Dh] [ebp-23Bh]
char v14; // [esp+10Eh] [ebp-23Ah]
char v15; // [esp+10Fh] [ebp-239h]
char v16; // [esp+110h] [ebp-238h]
char v17; // [esp+111h] [ebp-237h]
char v18; // [esp+112h] [ebp-236h]
char v19; // [esp+113h] [ebp-235h]
char v20; // [esp+114h] [ebp-234h]
char v21; // [esp+115h] [ebp-233h]
char v22; // [esp+116h] [ebp-232h]
char v23; // [esp+117h] [ebp-231h]
int main()
{
    v11[0] = 'C';
    v23 = 'X';
    v11[1] = 'Z';
    v22 = 155-'Z';
    v11[2] = '9';
    v21 = 155-'9';
    v11[3] = 'd';
    v20 = '7';
    v12 = 'm';
    v19 = 'G';
    v13 = 'q';
    v18 = 170-'q';
    v14 = '4';
    v17 = 'g';
    v15 = 'c';
    v16 = '8';
    cout<<*(&v11)<<endl;
	return 0;
}

在这里插入图片描述
flag即为

CZ9dmq4c8g9G7bAX

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值