第九届上海市大学生网络安全大赛暨“磐石行动”2024第二届全国高校网络安全攻防活动 初赛 网络安全赛道 个人Writeup(Re方向)

战队信息

战队名称:Besti学研组

战队排名:18

个人排名:33

Crypto

字符串加密

字符串base32编码后再仿射加密

密文:‘PMZJFMOOREHWF75S4YMIBQEGR47IBMNUJ47IBL6Q’
题目描述:获得base32前的flag值,flag格式flag{…}

根据提示,尝试仿射加密,发现不是常见的仿射加密,推测字符集为base32,即 ABCDEFGHIJKLMNOPQRSTUVWXYZ234567 ,已知明文前半部分为flag{的base32编码,即 MZWGCZ33,求解a,b,过程如下图:

在这里插入图片描述

求得a,b后,编写脚本解密,脚本如下:

#得到a17,b3
for i in range(55):
    if (-15*i)%32==1:
        print(i)

r="PMZJFMOOREHWF75S4YMIBQEGR47IBMNUJ47IBL6Q"

key="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"
a=17
b=3
for i in range(len(r)):
    temp = 0
    for j in range(len(key)):
        if key[j]==r[i]:
            temp=j
    for j in range(len(key)):
        if (a*j+b)%32==temp:
            print(key[j],end="")

在这里插入图片描述

Base32解密,得到flag:
在这里插入图片描述

Reverse

ezRe

IDA打开,搜索字符串,可以看到输入flag:
在这里插入图片描述
在这里插入图片描述

其中crazy函数对输入的Str进行了处理:
在这里插入图片描述

ohh函数进行了判断:
在这里插入图片描述

密文为:
在这里插入图片描述

逻辑较为简单,直接写出脚本,得到flag1:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <cmath>
#include <vector>
#include <algorithm>
#include <stack>
#include <set>
#include <map>
#include <ctime>
#include <unistd.h>
#include "defs.h"
// #include <bits/stdc++.h>

using namespace std;
typedef long long LL;
typedef long double DD;

int main()
{
	unsigned int a1[30] = {
    0x00000066, 0x0000006B, 0x00000063, 0x00000064, 0x0000007F, 0x00000063, 0x00000069, 0x00000070, 
    0x00000057, 0x00000060, 0x00000079, 0x00000054, 0x00000078, 0x0000005B, 0x0000006B, 0x00000050, 
    0x00000067, 0x00000054, 0x00000073, 0x00000061, 0x0000007C, 0x00000050, 0x00000064, 0x00000048, 
    0x0000006C, 0x00000056, 0x0000007E, 0x00000046, 0x00000065, 0x00000060
};
	for(int i=0;i<30;i++)
	{
		if ( (i & 1) != 0 )
			a1[i] += i;
		else	
			a1[i] ^= i;
	}

	for(int i=0;i<30;i++)
	{
		cout << (char) a1[i];
	}
	return 0; //-22 61 13 92
}

输入程序,发现还要我们输入一个true flag,仔细观察主程序,其在判断完第一个flag后,将my_function的每一比特异或 0x41u后,执行my_function,如图:
在这里插入图片描述

动态调试,发现my_function调用了xxx_crypt:
在这里插入图片描述

查看xxx_crypt,可以判断此为RC4编码:
在这里插入图片描述

回到my_function,仔细观察,可以看到密文:
在这里插入图片描述

在这里插入图片描述

猜测flag1为RC4密钥,尝试解密,得到flag:
在这里插入图片描述

easy_iot

使用binwalk分离文件:
在这里插入图片描述

得到一个文件夹,打开,感觉形似linux:
在这里插入图片描述

根据提示:比较简单的固件逆向,flag就在一个简单的文件里。挨个文件夹翻看,发现bin文件夹里有个文件修改日期不正常:

在这里插入图片描述

用IDA反编译这个bash,搜索字符串,发现有UPX壳:
在这里插入图片描述

使用UPX -d脱壳,再次反编译,可以看到try again这种字样:
在这里插入图片描述

F5反汇编,
在这里插入图片描述

简单来讲就是输入的Str每一字符异或0x63后与dword_A4154比较,也就是dword_A4154每一字符异或0x63后就能得到flag,脚本如下:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <cmath>
#include <vector>
#include <algorithm>
#include <stack>
#include <set>
#include <map>
#include <ctime>
#include <unistd.h>
#include "defs.h"
// #include <bits/stdc++.h>

using namespace std;
typedef long long LL;
typedef long double DD;

int main()
{
	unsigned int a1[] = {
    5,0xf,2,4,0x18,0x36,0x55,0x2F,0x55,0x27,0x56,0x55,0x55,0x22,0x56,0x3A,0x51,0x35,0x56,0x56,0x12,0x26,0x56,0x39,0x16,0x55,0x56,0x2F,0x16,0x51,0x55,0x3A,0x20,0x24,0x56,0x39,0x20,0x1E
};

	for(int i=0;i<38;i++)
	{
		cout << (char) (a1[i]^0x63);
	}
	return 0; //-22 61 13 92
}

运行得到flag:
在这里插入图片描述

ezlogin

使用GDA反编译,可以看到加密方式(DES)和密文:
在这里插入图片描述

使用压缩软件打开apk,可以找到so文件:

在这里插入图片描述

使用IDA反编译,可以找到getkey函数,看到了“key_here”,推测其为密钥:
在这里插入图片描述

尝试DES解密,直接得到flag:
在这里插入图片描述

Misc&Pwn&Web

队友Blog:第九届上海市大学生网络安全大赛暨“磐石行动”2024第二届全国高校网络安全攻防活动 初赛 个人Writeup | 瞻鹤的博客 (he-zhan.xyz)

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蓝帽杯全国大学生网络安全技能大赛是一项面向全国大学生网络安全竞赛。该比赛旨在提升大学生网络安全技能和意识,促进网络安全人才的培养。比赛内容涵盖了各个领域的网络安全知识和技能,包括但不限于电子取证、加密通道、Web安全等方面。 该比赛提供了一系列赛题和附件,选手需要根据题目要求进行解答和实践。例如,电子取证赛题中,选手需要完成对手机取证的任务,通过分析附件中的数据和信息来获取所需的证据[2]。还有其他赛题如加密的通道和Web安全等,选手需要运用相关的知识和技能来解决问题。蓝帽杯全国大学生网络安全技能大赛大学生提供了锻炼和展示自己网络安全能力的平台,也为培养网络安全人才作出了积极的贡献。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [[ CTF ]【天格】战队WriteUp-第六届”蓝帽杯“全国大学生网络安全技能大赛(半决赛)](https://blog.csdn.net/ZXW_NUDT/article/details/126173643)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [[ CTF ]天机战队WriteUp-第六届”蓝帽杯“全国大学生网络安全技能大赛初赛)](https://blog.csdn.net/ZXW_NUDT/article/details/125715546)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值