CTFShow re2 (RC4
创始人
2024-03-16 13:01:23

参考:CTFSHOW re2

本文:跟着大佬的博客一步一步做CTFShow re2的记录


IDA分析

有个比较函数
在这里插入图片描述re一下

s = "DH~mqqvqxB^||zll@Jq~jkwpmvez{"
s1 = ''
for i in s:s1 += chr(ord(i) ^ 0x1f)
print(s1)

得到
在这里插入图片描述再四处看看
跟进sub_401028
在这里插入图片描述四个sub点进去看看,感觉最后一个比较重要(因为它的参数有stream?
在这里插入图片描述像RC4算法
我不知道啊
大概就是要%256,要打乱,要交换,要按字节运算,吧?

之后去找到RC4算法,用上面得到的[Warnning]Access_Unauthorized作为key,附件里打开是乱码的enflag.txt里的数据作为要加密的数据,改一通
因为RC4是对称加密,加密解密可以用同一个算法

enflag.txt数据怎么来的?
在这里插入图片描述
明显不能直接复制 (我就复制了当然是不行啦 ,猜想是二进制数据
那二进制数据怎么读取呢
折腾一会儿之后找到了在linux中用hexdump读取二进制数据的方法(直接使用是以十六进制显示的
参考:Linux下查看二进制文件
在这里插入图片描述看看别人的代码,发现pData的数据是以十六进制形式,每两位一存,并且上图中的四位里前两位和后两位要交换顺序 (这是什么意思啊小端序吗(混乱
也就是要改成0xc3, 0x82, 0xa3, 0x25, 0xf6, 0x4c, 0x36, 0x3b, 0x59, 0xcc, 0xc4, 0xe9, 0xf1, 0xb5, 0x32, 0x18, 0xb1, 0x96, 0xae, 0xbf, 0x08, 0x35
(亲测不换顺序不行
但至少数据能对上(我太菜了呜呜呜
十六进制两位也就是二进制八位,一个字节,对应unsigned char的size,还有一定要注意charunsigned char
来自RC4算法C语言实现:

1、明文密文还有状态数组S[i](0~255)类型应该选择为unsigned char 类型,因为其取值范围为0~255,且子长为一字节。
2、明文密文以及状态数组S[i]的类型应该全部一样,这样做异或运算时就不会发生内存溢出的问题。

最后代码是这样的

#include 
#include 
#include 
using namespace std;void rc4_init(unsigned char *s, unsigned char *key, unsigned long len)
{char k[256] = {0};unsigned char tmp = 0;for (int i = 0; i < 256; i++){s[i] = i;k[i] = key[i % len];}int j = 0;for (int i = 0; i < 256; i++){j = (j + s[i] + k[i]) % 256;tmp = s[i];s[i] = s[j];s[j] = tmp;}
}void rc4_crypt(unsigned char *s, unsigned char *data, unsigned long len)
{unsigned char tmp;unsigned long k = 0;int i = 0, j = 0, t = 0;for (k = 0; k < len; k++){i = (i + 1) % 256;j = (j + s[i]) % 256;tmp = s[i];s[i] = s[j];s[j] = tmp;t = (s[i] + s[j]) % 256;data[k] ^= s[t] ;}}int main()
{unsigned char s[256] = {0}, s2[256] = {0};char key[256] = {"[Warnning]Access_Unauthorized"};char pData[512] = {0xc3, 0x82, 0xa3, 0x25, 0xf6, 0x4c, 0x36, 0x3b, 0x59, 0xcc, 0xc4, 0xe9, 0xf1, 0xb5,
0x32, 0x18, 0xb1, 0x96, 0xae, 0xbf, 0x08, 0x35};rc4_init(s, (unsigned char*)key, strlen(key));for (int i = 0; i < 256; i++)s2[i] = s[i];unsigned long len = strlen(pData);rc4_crypt(s, (unsigned char*)pData, strlen(pData));printf("%s\n", pData);rc4_crypt(s2, (unsigned char*)pData, strlen(pData));printf("%s\n", pData);return 0;}

在这里插入图片描述

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...