xctf-easyxor

查壳

在这里插入图片描述

发现是64位无壳,gcc编译

ida查看伪代码

一般会自动转到main函数但习惯了通过字符串定位,可以避免对一下其它函数的忽略
在这里插入图片描述可以看到在主函数中直接进行了加密算法,第一行有个_main()函数看样子是初始化一类的,这些函数有时候很头疼,不能确定参与加密没有,不过在这道题里可以确定没有参与

算法分析
  • v8通过getchar函数不断从缓冲区读取字符,读到10时退出,也就是换行符,可以确定每次算法仅对一个字符进行运算
  • 然后key[v9%4]异或,key担任密钥角色
  • 接下来以v7为索引填充s,他应该是一个矩阵 ,可以看到最后与r参与了比较
  • 填充完毕后将剩余值都填充为-1
  • 比较
    所以多少个1就是其对应的ascll

wp

在这里插入图片描述

#include"stdio.h"
int main(){
	int flag[]={0x35,0x2f,0x2f,0x32,0x28,0x14,0x27,0x3B,0x3D,0x70,0x3c,0x0a,0x3d,0x73,0x3a,0xa,0x1f,0x73,0x3d,0x66,0x21,0x1c,0x6d,0x28,0};
	char *key ="SCNU";
	for(int i=0;i<24;i++){
	      flag[i] ^=key[i%4];
		  putchar(flag[i]);
	}
	//sleep();
	getchar();
return 0;
}

flag{Winn3r_n0t_L0s3r_#}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值