2021 羊城杯&网刃杯 re wp

发布时间:2024-02-03 19:30

@TOC

Resmc

Smc动调即可,找到加密函数,恢复栈帧,即可看到加密函数,变异的base64

#include
#include
unsigned char a[100]={\"H>oQn6aqLr{DH6odhdm0dMe`MBo?lRglHtGPOdobDlknejmGI|ghDb<4\"};
unsigned char s[100]={  0xE4, 0xC4, 0xE7, 0xC7, 0xE6, 0xC6, 0xE1, 0xC1, 0xE0, 0xC0, 
  0xE3, 0xC3, 0xE2, 0xC2, 0xED, 0xCD, 0xEC, 0xCC, 0xEF, 0xCF, 
  0xEE, 0xCE, 0xE9, 0xC9, 0xE8, 0xC8, 0xEB, 0xCB, 0xEA, 0xCA, 
  0xF5, 0xD5, 0xF4, 0xD4, 0xF7, 0xD7, 0xF6, 0xD6, 0xF1, 0xD1, 
  0xF0, 0xD0, 0xF3, 0xD3, 0xF2, 0xD2, 0xFD, 0xDD, 0xFC, 0xDC, 
  0xFF, 0xDF, 0x95, 0x9C, 0x9D, 0x92, 0x93, 0x90, 0x91, 0x96, 
  0x97, 0x94, 0x8A, 0x8E};
char q[100]={\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"};
int p[100];
int main(){
	//int n=strlen(a);
	//printf(\"%d \",n);
	for(int i=0;i<56;i+=4){
		a[i]^=0xa6;
		a[i+1]^=0xa3;
		a[i+2]^=0xa9;
		a[i+3]^=0xac;
	}
	
	for(int i=0;i<56;i++){
		//printf(\"%x \",a[i]);
		for(int j=0;j<64;j++){
			if(a[i]==s[j]){
				printf(\"%d \",j);
				p[i]=j;
			}
		}
	}
	for(int i=0;i<56;i++){
		printf(\"%c\",q[p[i]]);
	}

	return 0;
}

找到对应的顺序后,用base64解密即可

reverse1

key长度64位 sm3加密
爆破可以拿到key ,然后输入后文件自动加密即可拿到flag
\"2021

from gmssl import sm3, func
from Crypto.Util.number import *
if __name__ == \'__main__\':
        #key = long_to_bytes(0x32)
        #print(key)
        for i in range(33,127):
                key2=long_to_bytes(i)
                key = b\'wel30m_t0_sm3!!!\'+key2
                y = sm3.sm3_hash(func.bytes_to_list(key))
                print(y,chr(i))

2048小游戏

2048小游戏
玩2048 成功后有判断
\"2021

Patch判断后 就可以到加密环节
把16格格的总和数作为参数参与加密 满足这个式子等于0x1a8cd即可拿到总和数
\"2021

直接解密,发现数据太大,弄不出来
可以动调解密,这个式子是一个线性关系,夹逼即可
Patch掉动调和这里
\"2021

不断尝试,8448成功过掉判断
后面的两个简单的加密 前四位和剩下的,动调可以拿到flag

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号