buuctf——[MRCTF2020]Transform && buuctf——[GWCTF 2019]xxor &&buuctf—— [V&N2020 公开赛]CSRe

本文详细介绍了三个CTF比赛的解题过程,包括[MRCFT2020]Transform的main函数和数组操作,[GWCTF 2019]xxor中的加密算法解析,以及[V&N2020 公开赛]CSRe的解壳和SHA1加密解密。通过逆向工程,解出了flag{1415turn}。

[MRCTF2020]Transform

在这里插入图片描述
在这里插入图片描述
main函数
在这里插入图片描述
数组
在这里插入图片描述

model = [0x9, 0x0A, 0x0F, 0x17, 0x7, 0x18, 0x0C, 0x6, 0x1, 0x10, 0x3, 0x11, 0x20, 0x1D, 0x0B, 0x1E, 0x1B, 0x16, 0x4, 0x0D, 0x13, 0x14, 0x15, 0x2, 0x19, 0x5, 0x1F, 0x8, 0x12, 0x1A, 0x1C, 0x0E, 0]
model1 = [0x67, 0x79, 0x7B, 0x7F, 0x75, 0x2B, 0x3C, 0x52, 0x53, 0x79, 0x57, 0x5E, 0x5D, 0x42, 0x7B, 0x2D, 0x2A, 0x66, 0x42, 0x7E, 0x4C, 0x57, 0x79, 0x41, 0x6B, 0x7E, 0x65, 0x3C, 0x5C, 0x45, 0x6F, 0x62, 0x4D]

flag = [0]*33

for i in range(len(model)):
    model1[i] ^= model[i]

for i in range(len(model)):
    flag[model[i]] = model1[i]
print (''.join([chr(x) for x in flag]))

在这里插入图片描述

[GWCTF 2019]xxor

在这里插入图片描述
把文件改成exe文件
在这里插入图片描述
首先让我们输入6个数
然后进行for循环。
在这里插入图片描述
在进行if
在这里插入图片描述
看if语句的sub_400770
在这里插入图片描述
可以得到
a0=3746099070
a1=550153460
a2=3774025685
a3=1548802262
a4=2652626477
a5=2230518816
看上面的for循环,每次取出两个数据,sub_400686对每次取出的第一个数据进行处理。。unk_601060中存放着2,2,3,4
在这里插入图片描述
看sub_400686
在这里插入图片描述
简单的加密处理
我们倒着来写脚本

#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]);

}

在这里插入图片描述
在这里插入图片描述

[V&N2020 公开赛]CSRe

在这里插入图片描述
用de4dot解壳
在这里插入图片描述
拖入32位dnSpy,找到Main函数
在这里插入图片描述
下面说str+text就是flag里面的内容,看str和text,看前面的Class3.smethod_0
在这里插入图片描述
sha1加密,拿着字符串解密。
在这里插入图片描述
在这里插入图片描述

所以字符串解密后
str前面去掉3后面去掉9,得到1415
text前面去掉re,得到turn
所以flag为flag{1415turn}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值