luck_guy

拿到文件,拖入ida,是64位

检查字符串

在这里插入图片描述

就顺着这个过去了,结果这个也就是main函数,没什么特别

patch_me

在这里插入图片描述

很容易,输入偶数输出flag

get_flag

在这里插入图片描述

仔细看一下,就1,4,5有用
1,是f1追加到s后面,f2追加到s后面,f1知道,f2还不知道,s是空的
4,是给f2赋值
5,给f2加密

所以顺序应该是4->5->1

小结

1,本题是64位,所以是大端序,再给f2赋值时,s需要倒过来(我这边是先转换成16进制在倒过来)
2,发现编译器在输出16进制时要加0x,不然编译器报错

附录脚本

#include
#include <string.h>

int main(){
char f2[] = { 0x69,0x63,0x75,0x67,0x60,0x6f,0x66,0x7f };

printf("GXY{do_not_");

for (int j = 0; j <= 7; ++j )
    {
      if ( j % 2 == 1 ){
        f2[j]-=2;
	  printf("%c",f2[j]);
	  }
      else{
        f2[j]-=1;
		printf("%c",f2[j]);
	  }
    }

system("pause");
return 0;

}

在这里插入图片描述

GXY{do_not_hate_me}
(输入进去竟然不对,明明查了就是这个!!!)

ok,我回来改下,输入flag{do_not_hate_me},算对

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值