首页 > 其他分享 >LitCTF2024——ezrc4

LitCTF2024——ezrc4

时间:2024-06-03 23:22:34浏览次数:20  
标签:LitCTF2024 rc4 v10 char int key 256 ezrc4

0x01 关于rc4

rc4简介

rc4的维基

具体实现

step1 rc4_init()

void rc4_init(unsigned char* s_box,unsigned char* key)
{
	int i=0,j=0;
	char k[256];
	int len=strlen(key);
	
	for(i=0;i<256;i++){
	//以256填充s盒
	s[i]=i;
	
	//使用key循环填充k
	k[i]=key[i%len];
	}
	//打乱s盒
	for(i=0;i<len;i++){
	j=(j+s_box[i]+k[i]);
	swap(s_box[i],s_box[j]);
	}
}

step3 rc4_crypt()

void rc4_crypt(unsigned char* s_box,char* data)
{
	int i=0,j=0;
	int result=0;
	int len=strlen(data);
	
	for(int k=0;k<len;k++){
	i=(i+1)%256;
	j=(j+s_box[i])%256;
	swap(s_box[i],s_box[j]);
	result=(s_box[i]+s_box[j])%256;
	data[k]^=s_box[i];
	}
}

0x02 rc4解密

rc4解密关键在于key的选取,只要有正确的key和密文,编写脚本再跑一遍密文即可

0x03 关于题目

关于密文

image
IDA的问题,没有识别出v8和v9,buf1数组共四个数据

关于key

image
追踪key
image

检查交叉,发现是假key
image

xor解密

key="fenkey?"
key=list(key)
key1=[10, 12, 26, 8, 17, 31, 30]
for i in range(len(key)):
    key[i]=chr(ord(key[i])^key1[i])
for i in range(0,len(key)):
    print(key[i],end="")
//litctf!

0x03 EXP

#include "string"
#include <cstring>
using namespace std;
long long buf[4];
unsigned char v10[256];
unsigned char v11[256];

void rc4_init()
{
    char key[]="litctf!";
    unsigned int a3= strlen(key);
    for (int i = 0; i < 256; ++i) {
        v10[i]=i;
        v11[i]=key[i%a3];
    }
    int j=0;
    for (int i = 0; i < 256; ++i)
    {
        j=(j+v10[i]+v11[i])%256;
        swap(v10[i],v10[j]);
    }
}

void rc4_crypt(char* flag) {
    int i = 0, j = 0;
    int result;
    unsigned long len= strlen(flag);
    for (int k = 0; k < len; ++k) {
        i = (i + 1) % 256;
        j = (j+v10[i])%256;
        swap(v10[i], v10[j]);
        result = (v10[i]+v10[j])%256;
        flag[k]^=v10[result];
    }
}

int main() {
    buf[0]=0x606EA290DC7CB2D5;
    buf[1]=0x3190B05971E41306;
    buf[2]=0xD71DC7B2;
    buf[3]=0x7F;
    rc4_init();
    rc4_crypt((char*) buf);
    printf("%s",buf);
    return 0;
}
//LitCTF{rc4_love_nice 少个“}”,O.o?

标签:LitCTF2024,rc4,v10,char,int,key,256,ezrc4
From: https://www.cnblogs.com/cia1lo/p/18229900

相关文章

  • LitCTF2024-ZongRan战队WriteUp
    ZongRan战队WriteUpWeb+Misc:MuneyoshiCrypto:chachaReverse:laonazaixiuxingMisc涐贪恋和伱、甾―⑺dé毎兮毎秒解题思路:lsb隐写,直接提取LitCTF{e8f7b267-9c45-4c0e-9d1e-13fc5bcb9bd6}你说得对,但__一张二维码扫描一下发现不对,发现这是原神网页binwalk提取一下然后......
  • Litctf2024-Crypto(部分wp)
    common_primes共享素数给了一个e,和多组的n,c。这些n,c还都是一个明文m通过对不同的n进行gcd()算法,求出最大公约数(即p)求出p了,就能求出q,进而求出d,解出明文mfromCrypto.Util.numberimport*importgmpy2n1=6330693176526188188891200809534047097877299962020517485727101......
  • LitCTF2024 web复盘
    昨天61,本来打算出去玩玩,看到有比赛那就做做。题目总体来说不难,就是没有提示试错太多了,复盘下昨天的一些东西(今天NSS上靶机没上线,文字描述吧)。exx常规的xxe漏洞直接打就行,file:///flagSAS-SerializingAuthenticationSystem极其简单的反序列化,直接构造使其满足isvaild的......
  • LitCTF2024
    YR队员:naby,liyue总结:很符合新生赛的水平但是我pwn刚学完了栈,这就告诉我栈已经不算入门了嘛。(哭web(6/6)exx-naby原理:xxe随便输一下,然后就是简单的xxe了一个....池子-liyuessti模板注入参考教程https://blog.csdn.net/qq_61955196/article/details/132237648......