【BUUCTF Re】


BUUCTF 逆向刷题记录

1.reverse_2

1.exeinfope查壳 ,无壳 64位

在这里插入图片描述
2.IDA64位打开查看主函数
在这里插入图片描述

看到最后,一个比较函数,比较字符串flag和s2,如果相等的话就可以获取flag

在这里插入图片描述

再往上看

在这里插入图片描述

可以用键盘r键将数字转换为字母,意思是,若flag=i/r,其就会被转化为数字1,双击flag跟进

在这里插入图片描述
即flag应该是{hacking_for_fun},改为{hack1ng_fo1_fun}即可

2.内涵的软件

运行一下,心里有个数

然后查壳:32位 无壳,IDA打开,
view–>open–>string ,点击跟进,TAB键

v6 = 5;
  v5 = "DBAPP{49d3c93df25caad81232130f3d2ebfad}";
  while ( v6 >= 0 )
  {
    printf(&byte_4250EC, v6);
    sub_40100A();
    --v6;
  }
  printf(asc_425088);
  v4[0] = 1;
  scanf("%c", v4);
  if ( v4[0] == 89 )
  {
    printf(aOd);
    return sub_40100A();
  }
  else
  {
    if ( v4[0] == 78 )
      printf(&byte_425034);
    else
      printf(&byte_42501C);
    return sub_40100A();
  }
}

结合题目,盲猜一波,flag**{49d3c93df25caad81232130f3d2ebfad}** √了

3.新年快乐

查壳;32位,有壳
在这里插入图片描述
upx自动脱壳
在这里插入图片描述
然后ida打开
在这里插入图片描述
strcpy:把HappyNewYear!复制给str2,输入str1进行比较,相等即正确,即str1应该为HappyNewYear!---->flag{HappyNewYear!}

4.xor

64位,无壳,ida64打开,找到main函数

  memset(__b, 0, 0x100uLL);
  printf("Input your flag:\n");
  get_line(__b, 256LL);
  if ( strlen(__b) != 33 )
    goto LABEL_7;
  for ( i = 1; i < 33; ++i )
    __b[i] ^= __b[i - 1];
  if ( !strncmp(__b, global, 0x21uLL) )
    printf("Success");
  else
LABEL_7:
    printf("Failed");
  return 0;
}

可知,要输入—b字符串,并且,长度为33才行,否则就输出Failed,从后往前看最后是要比较__b(此时的—b被进行了异或操作,两次异或等于没有异或,所以要写出异或脚本), global,让其相等,跟进一下globle
在这里插入图片描述

双击跟进

在这里插入图片描述

SHIFT+e提取数据

在这里插入图片描述
提取16进制和数字都可,

a = [  0x66, 0x0A, 0x6B, 0x0C, 0x77, 0x26, 0x4F, 0x2E, 0x40, 0x11,
  0x78, 0x0D, 0x5A, 0x3B, 0x55, 0x11, 0x70, 0x19, 0x46, 0x1F,
  0x76, 0x22, 0x4D, 0x23, 0x44, 0x0E, 0x67, 0x06, 0x68, 0x0F,
  0x47, 0x32, 0x4F, ]  # ida shift+e 提取16进制
s = 'f'
for i in range(1, len(a)):
    s += chr(a[i] ^ a[i - 1])
print(s)

chr(i)函数的作用是 返回整数 i 所对应的 Unicode 字符。
---->flag{QianQiuWanDai_YiTongJiangHu}

5.helloword

apk文件,Android Killer打开,搜索一下flag
在这里插入图片描述
—>flag{7631a988259a00816deda84afb29430a}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值