从0到1的CTF之旅———— Reverse(1)

做题就像坐牢一样,继续继续,汪汪队蹲大牢
————————————————————————————————————————————

第一题:easyre(题目如下)
在这里插入图片描述
一段可执行文件,拖到IDA里面打开,直接可以看到flag。
在这里插入图片描述
————————————————————————————————————————————

第二题:reverse1(题目如下)
在这里插入图片描述用IDA64位打开。

在这里插入图片描述
shift+F12打开字符串窗口,搜索到有关flag的提示!
在这里插入图片描述
单击上述的this is the right flag,会跳转到如下界面。

在这里插入图片描述
然后按住ctrl+x,会出现下面这个界面,点击OK。

在这里插入图片描述
发现已经跳转到框图了。

在这里插入图片描述

快捷键F5,进入到代码页面。

__int64 sub_1400118C0()
{
  char *v0; // rdi
  __int64 i; // rcx
  size_t v2; // rax
  size_t v3; // rax
  char v5[36]; // [rsp+0h] [rbp-20h] BYREF
  int j; // [rsp+24h] [rbp+4h]
  char Str1[224]; // [rsp+48h] [rbp+28h] BYREF
  unsigned __int64 v8; // [rsp+128h] [rbp+108h]

  v0 = v5;
  for ( i = 82i64; i; --i )
  {
    *(_DWORD *)v0 = -858993460;
    v0 += 4;
  }
  for ( j = 0; ; ++j )
  {
    v8 = j;
    v2 = j_strlen(Str2);
    if ( v8 > v2 )
      break;
    if ( Str2[j] == 111 )
      Str2[j] = 48;
  }
  sub_1400111D1("input the flag:");
  sub_14001128F("%20s", Str1);
  v3 = j_strlen(Str2);
  if ( !strncmp(Str1, Str2, v3) )
    sub_1400111D1("this is the right flag!\n");
  else
    sub_1400111D1("wrong flag\n");
  sub_14001113B(v5, &unk_140019D00);
  return 0i64;
}

发现有一个strncmp函数,是将三个进行对比,我们分别看一下。

这里丢出strncmp函数的规则。

在这里插入图片描述
我们输入的str1要和str2比较如果相同就会得到flag。

我们先看到str1,双击,发现str1的内容是需要用户输入的。
在这里插入图片描述

我们看到str2,发现str2是一个{hello_world}

在这里插入图片描述
看到程序上面,str2还是做出了一些更改的。
在这里插入图片描述
大概意思是将ascll码为111的修改为48的,此时的str2就为{hell0_w0rld}了。

尝试提交一下,发现提交成功!

————————————————————————————————————————————

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值