攻防世界-Reversing-x64Elf-100

Reversing-x64Elf-100

18最佳Writeup由 yuchouxuan 提供

收藏

反馈

难度:1

方向:Reverse

题解数:15

解出人数:2460

题目来源:

题目描述: 暂无

image-20230419215030320

image-20230419215303084

image-20230419220403402

image-20230419220505699

note:

undefined8 FUN_004006fd(long param_1)

{
  int local_2c;
  char *local_28 [4];
  
  local_28[0] = "Dufhbmf";
  local_28[1] = "pG`imos";
  local_28[2] = "ewUglpt";
  local_2c = 0;
  while( true ) {
    if (0xb < local_2c) {
      return 0;
    }
    if ((int)local_28[local_2c % 3][(local_2c / 3) * 2] - (int)*(char *)(param_1 + local_2c) != 1)
    break;
    local_2c = local_2c + 1;
  }
  return 1;
}



image-20230419220537936

image-20230419220434941

signed __int64 __fastcall sub_4006FD(__int64 a1)
{
  signed int i; // [rsp+14h] [rbp-24h]
  const char *v3; // [rsp+18h] [rbp-20h]
  const char *v4; // [rsp+20h] [rbp-18h]
  const char *v5; // [rsp+28h] [rbp-10h]

  v3 = "Dufhbmf";
  v4 = "pG`imos";
  v5 = "ewUglpt";
  for ( i = 0; i <= 11; ++i )
  {
    if ( (&v3)[i % 3][2 * (i / 3)] - *(char *)(i + a1) != 1 )
      return 1LL;
  }
  return 0LL;
}

*(char *)(i + a1) =(&v3)[i % 3][2 * (i / 3)]-1

CcmbPZ[dd\ig

DepfU`blmfts____________CdoeT_aklesr____________67 100 111 101 84 95 97 107 108

101 115 114

wrong try!

#include<stdio.h>


int sub_4006FD(void)
{
  signed int i; // [rsp+14h] [rbp-24h]
  const char *v3; // [rsp+18h] [rbp-20h]
  const char *v4; // [rsp+20h] [rbp-18h]
  const char *v5; // [rsp+28h] [rbp-10h]
//int a1;
  v3 = "Dufhbmf";
  v4 = "pG`imos";
  v5 = "ewUglpt";
  
  
  for ( i = 0; i <= 11; ++i )
  {
  	printf("%c",(&v3)[i % 3][2 * (i / 3)]);
//    if ( (&v3)[i % 3][2 * (i / 3)] - *(char *)(i + a1) != 1 )
//      return 1LL;
  }
  for ( i = 0; i <= 11; ++i )
      {
      	printf("%s","-");
    //    if ( (&v3)[i % 3][2 * (i / 3)] - *(char *)(i + a1) != 1 )
    //      return 1LL;
      }
    for ( i = 0; i <= 11; ++i )
    {
    	printf("%c",(&v3)[i % 3][2 * (i / 3)]-1);
  //    if ( (&v3)[i % 3][2 * (i / 3)] - *(char *)(i + a1) != 1 )
  //      return 1LL;
    }
      for ( i = 0; i <= 11; ++i )
	      {
	      	printf("-");
	    //    if ( (&v3)[i % 3][2 * (i / 3)] - *(char *)(i + a1) != 1 )
	    //      return 1LL;
	      }
        for ( i = 0; i <= 11; ++i )
	    {
	    	printf("%d ",(&v3)[i % 3][2 * (i / 3)]-1);
	  //    if ( (&v3)[i % 3][2 * (i / 3)] - *(char *)(i + a1) != 1 )
	  //      return 1LL;
	    }
	    
	    
	    
  return 0LL;
}

int main(void){
	sub_4006FD();
	return 0;
}

DepfU`blmfts------------CdoeT_aklesr------------67 100 111 101 84 95 97 107 108

101 115 114

Process exited after 0.07565 seconds with return value 0
请按任意键继续. . .

┌──(kwkl㉿kwkl)-[~/HODL/adworld]
└─$ ./43ba593623a7434fa5437cdd5c7862a1.re  
Enter the password: CcmbPZ[dd\ig
Incorrect password!
                                                                                                                                                                                 
┌──(kwkl㉿kwkl)-[~/HODL/adworld]
└─$ ./43ba593623a7434fa5437cdd5c7862a1.re                                                                                                                                    1 ⨯
Enter the password: Code_Talkers
Nice!
                                                                                                                                                                                 
┌──(kwkl㉿kwkl)-[~/HODL/adworld]
└─$ 

Final try!

#include<stdio.h>

int  FUN_004006fd( void)
{
  int local_2c,n,i;
   char *local_28 [4];
  int param_1[11]={99};
  local_28[0] = "Dufhbmf";
  local_28[1] = "pG`imos";
  local_28[2] = "ewUglpt";
  local_2c = 0;
  for ( local_2c = 0; local_2c <= 11; ++local_2c ) {

    for (n=0;n<222;n++){
    if (local_28[local_2c % 3][(local_2c / 3) * 2] - (n + local_2c) == 1)
    	param_1[local_2c]=n;
    	
    }
    local_2c = local_2c + 1;
  }
 		for ( i = 0; i <= 11; ++i ){
 			printf("%c",param_1[i]);
 		}
 		printf("\n------------------------\n");
		  		for ( i = 0; i <= 11; ++i ){
		  			printf("%c",local_28[i % 3][(i / 3) * 2]-1);
		  		}      
  return 1;
}


int sub_4006FD(void)
{
   int i,n; // [rsp+14h] [rbp-24h]
  const char *v3; // [rsp+18h] [rbp-20h]
  const char *v4; // [rsp+20h] [rbp-18h]
  const char *v5; // [rsp+28h] [rbp-10h]
//int a1;
  v3 = "Dufhbmf";
  v4 = "pG`imos";
  v5 = "ewUglpt";
  
  int a1[11]={1};
  
//  for ( i = 0; i <= 11; ++i )
//  {
//  	printf("%c",(&v3)[i % 3][2 * (i / 3)]);
    if ( (&v3)[i % 3][2 * (i / 3)] - *(char *)(i + a1) != 1 )
      return 1LL;
//  }
//
//
//
//	      	printf("\n------------------------\n");
//
//
//        for ( i = 0; i <= 11; ++i )
//	    {
//	    	printf("%c",(&v3)[i % 3][2 * (i / 3)]-1);
//
//	    }
	    printf("\n------------------------\n");
        for ( i = 0; i <= 11; ++i )
	    {
	    //	printf("%c",(&v3)[i % 3][2 * (i / 3)]-1);
	            for ( n = 0; n < 222; n++)
		
		        {
		
		            if ((&v3)[i % 3][2 * (i / 3)]- n == 1)
		
		                a1[i] = n;
		
		        }

	    }	
		for ( i = 0; i <= 11; ++i ){
			printf("%c",a1[i]);
		}   
		printf("\n------------------------\n");
	    
	    
  return 0LL;
}

int main(void){
	sub_4006FD();
	FUN_004006fd();
	return 0;
}



image-20230419234048774

Useful code:

int  FUN_004006fd( void)
{
  int local_2c,n,i;
   char *local_28 [4];
  int param_1[11]={99};
  local_28[0] = "Dufhbmf";
  local_28[1] = "pG`imos";
  local_28[2] = "ewUglpt";
  local_2c = 0;
  
 		printf("\n------------------------\n");
		  		for ( i = 0; i <= 11; ++i ){
		  			printf("%c",local_28[i % 3][(i / 3) * 2]-1);
		  		}      
  return 1;
}
  int local_2c,n,i;
   char *local_28 [4];
  int param_1[11]={99};
  local_28[0] = "Dufhbmf";
  local_28[1] = "pG`imos";
  local_28[2] = "ewUglpt";
  local_2c = 0;
  
 		printf("\n------------------------\n");
		  		for ( i = 0; i <= 11; ++i ){
		  			printf("%c",local_28[i % 3][(i / 3) * 2]-1);
		  		}  

https://www.freebuf.com/articles/network/327979.html算法分析丨Reversing-x64Elf-100逆向题

https://blog.csdn.net/czw2479/article/details/124996658

res = ""
word = ["Dufhbmf", "pG`imos", "ewUglpt"]
for i in range(12):
    res += chr(ord(word[i % 3][2 * (i // 3)]) - 1)
print(res)
 
"""output
Code_Talkers
"""


https://www.freebuf.com/articles/network/327979.html算法分析丨Reversing-x64Elf-100逆向题

res = “”
word = [“Dufhbmf”, “pG`imos”, “ewUglpt”]
for i in range(12):
res += chr(ord(word[i % 3][2 * (i // 3)]) - 1)
print(res)

“”“output
Code_Talkers
“””

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值