吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3302|回复: 8
收起左侧

[CTF] 攻防世界 CTF RE 新手区 logmein 题解

  [复制链接]
NodeSans 发表于 2021-1-16 13:22

新人第一次在52pojie上发帖子,如有问题,请各位海涵。

这个题目本来不应该会很难的,主要是这个题目用 ida 转伪代码的时候,伪代码过于奇葩,导致题目卡在了最后一步。

不说了上题解。

我们首先将程序丢进ida,然后找到main函数后按住F5翻译成伪代码。然后得到了这个代码。

为了方便阅读,部分代码的变量被我重新命名过

void __fastcall __noreturn main(__int64 a1, char **a2, char **a3)
{
  size_t len; // rsi
  int i; // [rsp+3Ch] [rbp-54h]
  char input[36]; // [rsp+40h] [rbp-50h]
  int v6; // [rsp+64h] [rbp-2Ch]
  __int64 v7; // [rsp+68h] [rbp-28h]
  char target[8]; // [rsp+70h] [rbp-20h]
  int v9; // [rsp+8Ch] [rbp-4h]

  v9 = 0;
  strcpy(target, ":\"AL_RT^L*.?+6/46");
  v7 = 28537194573619560LL;
  v6 = 7;
  printf("Welcome to the RC3 secure password guesser.\n", a2, a3);
  printf("To continue, you must enter the correct password.\n");
  printf("Enter your guess: ");
  __isoc99_scanf("%32s", input);
  len = strlen(input);
  if ( len < strlen(target) )
    sub_4007C0();                              
  for ( i = 0; i < strlen(input); ++i )
  {
    if ( i >= strlen(target) )
      sub_4007C0();                             // 输出错误提示
    if ( input[i] != (char)(*((_BYTE *)&v7 + i % v6) ^ target[i]) )// v6就是7
      sub_4007C0();                             // 输出错误提示
  }
  sub_4007F0();                                 // 输出正确提示
}

这个伪代码貌似也没啥,主要是最后判断密码正确性的时候,出现的这个表达式是啥:

(char)(*((_BYTE *)&v7 + i % v6) ^ target[i])

首先 v7 估计是一个long long类型的变量,那么在这个表达式中,最诡异的是*((_BYTE *)&v7 + i % v6)这部分。我们猜测(_BYTE )估计是将这个v7的地址转换为某个1字节类型的变量的指针,可以等价看成是`(char )`。所以,很显然这个地方是将v7所存储的数据看成字符数组。

由于在内存中存储一个整数数据,数据的高位存在地址更大的内存处,所以v7在内存中的存储结构是这样的

v7 的 16 进制为 65626d61726168

image.png

所以最后在这个表达式中,v7等价于这样的数组:

char v7[] = {0x68, 0x61, 0x72, 0x61, 0x6d, 0x62, 0x65};

刚好数组大小为7个1字节变量,和 v6 的值吻合。到这里就差不多了,应该能看懂剩下的东西了。

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
caketi + 1 + 1 分析的到位啊
woshicp + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

dy20181111 发表于 2021-1-18 08:25
我也是新手 已入学习
woshicp 发表于 2021-1-17 20:40
lifz888 发表于 2021-1-18 08:07
13203893521 发表于 2021-1-18 10:18
加油,你们这也太厉害了
wsf5201314 发表于 2021-1-19 20:50
谢谢分享  
酩酊剑舞 发表于 2021-1-21 15:24
强啊,我至今只会wp。。。
 楼主| NodeSans 发表于 2021-1-21 16:18
酩酊剑舞 发表于 2021-1-21 15:24
强啊,我至今只会wp。。。

WP是什么东西?
姆町验证 发表于 2021-1-22 23:47
虽然看不懂,但还是留个言支持下分享!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 08:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表