第十七届全国大学生信息安全竞赛 CISCN 2024 创新实践能力赛初赛 Re方向 ——whereThel1b

小菜鸡只写了三个题,现在只是复现一下,记录下学习到的知识

whereThel1b

爆破

文件里面包含一个python文件一个so文件

查了下,这个so文件可能是cython编写的,很复杂,我不会看

import whereThel1b
flag = input("where is my flag:")
flag = flag.encode()
encry = [108, 117, 72, 80, 64, 49, 99, 19, 69, 115, 94, 93, 94, 115, 71, 95, 84, 89, 56, 101, 70, 2, 84, 75, 127, 68, 103, 85, 105, 113, 80, 103, 95, 67, 81, 7, 113, 70, 47, 73, 92, 124, 93, 120, 104, 108, 106, 17, 80, 102, 101, 75, 93, 68, 121, 26]
whereThel1b.whereistheflag(flag)
ret = whereThel1b.trytry(flag)
if ret == encry:
    print("rrrrrrrrrrrright")
else:
    print("wwwwwwwwwwwwwwwrong")




kali上运行了一堆,没看到任何有用的消息

尝试在kali上运行这个python,告诉我版本不同

window上不行哦,因为so文件是只能linux上运行

成功运行了

首先第一个想法肯定是破解这个so文件,但是我尝试了下,不会~

但是IDA里面告诉我一个重要的消息,长度和有base64的存在

然后我就尝试,跳过加密过程,因为我看不懂,然后尝试对应密文,我首先是试着让得到的数据数量一样,然后到了这个数量的flag就ok了

42个字符,这个42个是怎么来的呢——42/3*4 ,base64!

所以最后的encry是flagbase64后的数据进行某种操作得到的

然后我就尝试能不能爆破出来————

原理是,因为我们是三个明文确定4个密文,那么我们就三个三个的爆破

代码如下:

# 初始化flag模板
flag_template = '12345aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}'
flag_bytes = flag_template.encode()

# 给定的加密向量
encryption_vector = [
    108, 117, 72, 80, 64, 49, 99, 19, 69, 115, 94, 93, 94, 115, 71, 95,
    84, 89, 56, 101, 70, 2, 84, 75, 127, 68, 103, 85, 105, 113, 80, 103,
    95, 67, 81, 7, 113, 70, 47, 73, 92, 124, 93, 120, 104, 108, 106, 17,
    80, 102, 101, 75, 93, 68, 121, 26
]

# 初始化匹配起始位置和步长
start_pos = 0
step = 3
match_start = 0

# 解码循环
for i in range(start_pos, 41, step):
    temp_flag = flag_bytes  # 保存当前flag副本用于尝试修改
    found_match = False  # 添加标志位判断本轮是否找到匹配

    for x in string.printable:
        for y in string.printable:
            for z in string.printable:
                temp_flag = temp_flag[:i] + bytes([ord(x), ord(y), ord(z)]) + temp_flag[i + 3:]

                # 尝试解码并检查匹配情况

                temp_result = fun1(temp_flag.decode())
                match = all(encryption_vector[j] == (temp_result[j]) for j in range(match_start, match_start + 4))

                if match:
                    flag_bytes = temp_flag  # 更新flag字节
                    found_match = True  # 设置找到匹配标志
                    break  # 匹配成功,跳出yz循环
            if found_match:
                break  # 如果匹配成功,也跳出x循环
        if found_match:
            break  # 直接进行下一轮,无需执行else部分
    print(flag_bytes.decode())
    match_start += 4  # 更新匹配起始索引


# 输出最终解码的flag
print(flag_bytes.decode())

中间因为运行一个fun1就有一个where is flag 出现,我让AI把他删除了

eazy!

猜测——逆向

这个方法比较马后炮,我也是看着别人wp猜的

还是回到这一步,虽然 我比赛没有逆出来,但是赛完后看了下哥老关的wp,

抛开我们不认识的函数不说,认识的函数就是 base64——randint——random 加密是什么呢?

只能猜经典xor了

import base64
encry = [108, 117, 72, 80, 64, 49, 99, 19, 69, 115, 94, 93, 94, 115, 71, 95, 84, 89, 56, 101, 70, 2, 84, 75, 127, 68, 103, 85, 105, 113, 80, 103, 95, 67, 81, 7, 113, 70, 47, 73, 92, 124, 93, 120, 104, 108, 106, 17, 80, 102, 101, 75, 93, 68, 121, 26]
flag='flg'
flag=flag.encode()
print(base64.b64encode(bytes(flag)))

通过这一段代码,我们可以得到

base64后

90 109 120 110 

这四组数据成为了

108, 117, 72, 80,

。。

来个截图你们自己看看,我也不知道怎么找到这个加密的

公布这段费解的过程,求大佬知道给我讲讲

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
### 回答1: 第17届全国大学生智能汽车竞赛是由中国高等教育学会主办的年度比。该比旨在提高大学生对智能汽车技术的兴趣和研究能力,促进智能汽车技术在中国的发展。参队伍需要设计并建造一辆智能汽车,并在竞赛中展示其在道上的性能。竞赛分为前资格和决两个阶段,选手需要在竞赛中展示其在道上的性能。 ### 回答2: 第17届全国大学生智能汽车竞赛全国高校学生之间的一项重要比活动。该竞赛旨在提升学生在智能汽车领域的科学技术创新能力,培养学生的动手实践与团队协作精神。 该比以团队为单位,参队伍由高校学生自愿组成。比主题包括智能驾驶、智能控制、智能感知和智能决策等方面。参队伍需要从设计到制作全程参与,包括车身结构设计、电路设计、编程等。比内容涵盖汽车自动驾驶、交通场景仿真、人工智能算法开发以及智能车辆的安全性能等多个方面。 比过程分为初赛、决和总决初赛阶段是为了筛选优秀的参队伍,测试他们的车辆在不同场景下的自主行驶能力。决则是对初赛晋级队伍进行进一步的比拼,评估他们的技术水平和创新能力。总决阶段则是最高级别的比,对决出一等奖、二等奖等等各个奖项。 在比过程中,评委们以指导组织和执法者身份全程参与,通过录像、现场点评等形式给予队伍们专业的建议和评价,帮助他们提高技术水平和综合实力。 第17届全国大学生智能汽车竞赛为广大学生提供了一个展示自己才华和创新能力的舞台。通过参与该比,学生们可以学到更多专业知识,提高实践能力,培养团队协作精神,为汽车智能化技术的发展做出贡献。同时,该竞赛也为企业提供了一个寻找优秀人才的机会,为智能汽车领域的发展注入了新鲜血液。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Nickname

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值