NSSCTF [HNCTF 2022 Week1]超级签到

查看主函数

看到遍历 Str2,如果字符为 'o',则替换为 '0'

int __fastcall main_0(int argc, const char **argv, const char **envp)
{
  char *v3; // 指向 v7 的指针
  __int64 i; // 循环计数器
  size_t v5; // 存储 Str2 的长度
  char v7; // 存储输入字符
  int j; // 循环计数器和索引
  char Str1[224]; // 存储输入的 flag
  __int64 v10; // 用于循环计数器

  v3 = &v7;
  
  // 将 -858993460 写入 v7 的地址,循环 82 次
  for ( i = 82i64; i; --i )
  {
    *(_DWORD *)v3 = -858993460;
    v3 += 4;
  }

  // 遍历 Str2,如果字符为 'o',则替换为 '0'
  for ( j = 0; ; ++j )
  {
    v10 = j;
    if ( j > j_strlen(Str2) )
      break;
    if ( Str2[j] == 111 )
      Str2[j] = 48;
  }

  // 提示用户输入标志
  sub_1400111D1("input the flag:");

  // 读取用户输入的最多 20 个字符到 Str1 中
  sub_14001128F("%20s", Str1);

  v5 = j_strlen(Str2);

  // 比较 Str1 和 Str2 的前 v5 个字符
  if ( !strncmp(Str1, Str2, v5) )
    sub_1400111D1("this is the right flag!\n");
  else
    sub_1400111D1("wrong flag\n");

  return 0;
}

一进函数看到字符串

解题的思路就是把字符串中的o改成0

得到flag

NSSCTF{hell0_w0rld}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值