logmein

logmein

难度系数: ⭐⭐⭐
题目来源: RC3 CTF 2016
题目描述:菜鸡开始接触一些基本的算法逆向了
题目场景: 暂无
 
附件是一个没有后缀的文件
直接用ida打开
 
 

 可知是elf文件,64位

打开后F5查看伪代码,先看main函数

 发现sub_4007c0,转过去看一下

 显示的意思是密码不对

这flag不就出来了嘛,s[i] 不等于什么什么,就密码错误,剩下的你懂的!

看一下,s[i]的组成,有BYTE,v7,v6,v8

然后就修修改改,写成c跑一下

#include <stdio.h>
#include<string.h>
#define BYTE unsigned char
int main () {
    
  int i; // [rsp+3Ch] [rbp-54h]
  char s[36]; // [rsp+40h] [rbp-50h]
  int v6; // [rsp+64h] [rbp-2Ch]
  long long v7; // [rsp+68h] [rbp-28h]
  char v8[18] = ":"AL_RT^L*.?+6/46"; // [rsp+70h] [rbp-20h]
  v7 = 28537194573619560LL;
  v6 = 7;  
  for ( i = 0; i < strlen(v8); ++i )
  {
    s[i] = (char)(*((BYTE *)&v7 + i % v6) ^ v8[i]);
  }
  printf("%s
",s);
}

找个在线代码运行一下

 出来了,就是RC3-2016-XORISGUD,后面的乱码啥的就不要了

v7在ida里转的是__int64,在线代码__int64一直报错,我查了一下,__int64和long long一样,就改成long long了

还有v8,ida转的是[8],只有前八位,我没试能不能全部容纳,要求是要全部的,所以数了一下是包含了18个字符,就改成[18]了

看评论学会个技巧:

ida按R可以数字转字符

加油!未来可期!!

 
原文地址:https://www.cnblogs.com/rebirther/p/13039847.html