buuctf刷题记录7 [GWCTF 2019]xxor

27 篇文章 0 订阅

关键运算都在main函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qr5EiYWt-1596099354487)(D:\markdown\文件\图片\6.29.1.png)]

根据提示,我们要输入6次数据,在经过两次处理后的得到的数据,将其转成16进制再变成字符串

第一个处理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Iemqawdt-1596099354488)(D:\markdown\文件\图片\6.26.2.png)]

这是将输入的六个数据每次取两个,分别给dword_601078和dword_60107c,然后通过sub_400686这个函数进行运算

byte_601060里是四个数据 : 2 2 3 4

进到sub_400686内部[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MUysk0Fu-1596099354488)(D:\markdown\文件\图片\6.29.3.png)]

它里面是递加,我们可以递减来实现解密

再看第二处

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1ahq8KDx-1596099354491)(D:\markdown\文件\图片\6.29.4.png)]

通过逻辑直接可以推出改变后的6个数

xorm[0] = 3746099070;
xorm[1] = 550153460;
xorm[2] = 3774025685;
xorm[3] = 1548802262;
xorm[4] = 2652626477;
xorm[5] = 2230518816;

然后根据第一处写解密脚本

#include <stdio.h>
int main()
{
	unsigned int xorm[6];
	xorm[0] = 3746099070;
	xorm[1] = 550153460;
	xorm[2] = 3774025685;
	xorm[3] = 1548802262;
	xorm[4] = 2652626477;
	xorm[5] = 2230518816;
	int i = 0,j=0,sum;
	unsigned int temp[2] = {0};
	unsigned int data[4] = { 2,2,3,4 };
	for (i = 0; i < 5; i += 2)
	{
		temp[0] = xorm[i];
		temp[1] = xorm[i + 1];

		sum = 0x458BCD42 * 64;
		for (j = 0; j < 64; j++)
		{
			temp[1] -= (temp[0] + sum + 20) ^ ((temp[0] << 6) + 3) ^ ((temp[0] >> 9) + 4) ^ 0x10;
			temp[0] -= (temp[1] + sum + 11) ^ ((temp[1] << 6) + 2) ^ ((temp[1] >> 9) + 2) ^ 0x20;
			sum -= 0x458BCD42;
		}
		xorm[i] = temp[0];
		xorm[i + 1] = temp[1];
	}
	for (i = 0; i < 6; i++)
	printf("%x",xorm[i]);

}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F3tCWCbX-1596099354492)(D:\markdown\文件\图片\6.29.5.png)]

这是16进制输出的,转成字符串[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QmratliQ-1596099354494)()]

得到flag: flag{re_is_great!}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值