xctf 逆向crackme题解

1.运行,运行不了,查壳,发现是nspack壳。
在这里插入图片描述
在这里插入图片描述
2.在xp系统环境,用od载入,发现失败,用脱壳机脱壳。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.拖入到ida中,在main函数中看到关键代码

if ( strlen(&Buf) == 42 )
  {
    v4 = 0;
    while ( (*(&Buf + v4) ^ byte_402130[v4 % 16]) == dword_402150[v4] )
    {
      if ( ++v4 >= 42 )
      {
        printf("right!\n");
        goto LABEL_8;
      }
    }

在这里插入图片描述
在这里插入图片描述
分析算法可知,计算flag的代码如下:

s='this_is_not_flag'

a=[
0x12,0x4,0x8,0x14,0x24,0x5C,0x4A,0x3D,0x56,0x0A,0x10,0x67,0x0,0x41,0x0,0x1,0x46,0x5A,0x44,0x42,0x6E,0x0C,0x44,0x72,0x0C,0x0D,0x40, 0x3E, 0x4B, 0x5F, 0x2, 0x1, 0x4C, 0x5E, 0x5B, 0x17, 0x6E, 0x0C,0x16,0x68,0x5B,0x12,0,0,0x48,0,0,0,0,0,0,0,0,0,0,0,0,0,0
]

flag=''

for i in range(0,42):
   flag+=chr(ord(s[i%16])^a[i])

print flag

flag为:flag{59b8ed8f-af22-11e7-bb4a-3cf862d1ee75}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值