帕鲁杯2024 RE wp

1. Auth_System

改标志位ZF

2. 茶

壳脱不脱也没啥影响

查一下字符串,有个hint

那就猜测chacha20(根本没想到)

ChaCha20 - Crypto++ Wikiicon-default.png?t=N7T8https://www.cryptopp.com/wiki/ChaCha20

法一:脚本解密

加密需要两个参数,key(16-32字节)和nonce(8字节)

所以Is_This_TEA?只要前八个字节

字符串可以定位到一个初始化的函数,有疑似的参数可以猜测着尝试一下

#cha wp
from Crypto.Cipher import ChaCha20
enc_data = bytes.fromhex("f568c48912eed6dc520c7164f44b6378e1d0d3e248914fa8847b405a131f")
key = b"SGludDogSW1wcm92ZSBvZiBTYWxzYTIw"= b"Is_This_"      
cc = ChaCha20.new(key=key, nonce=nonce)       
print(cc.decrypt(enc_data))
#flag{But_I_Like_ChaCha20_More}
法二:动调

chacha20和RC4一样是流密码,可以通过动态调试解密,只要把密文输进去再跑一遍就可以

经过动调可以摸索出大致的逻辑

随便输一串输入,长度尽量长一些方便把密文patch到input里面(密文也可以动调在crypto里取),断在scanf后面

之前得到的密文f568c48912eed6dc520c7164f44b6378e1d0d3e248914fa8847b405a131f是42行转化为16进制之后的结果,不过不方便转化为可见字符,所以我们patch到input里面去

F9到转16进制前面

3. PyLu

注意用最新版的pyinstxtractor.py,不然魔数会有乱七八糟的问题

z3爆一下,要跑一会

#PyLu wp
import z3
from Crypto.Util.number import *
def enc(key):R = bytes_to_long(b'Welcome To PaluCTF!')MOD = 2 ** 418R = R ^ R - 60 >> 24R = R ^ R - 60 << 88R ^= keyR = -R * R * 2024 % MOD  #BitVec不支持乘方运算,这里手动改成连乘R = R * key % MODreturn R
cor = 0x2E441F765514CCA89173554726494D37E9FBE774B6F807BC5F6E71117530CE3D7DB5F70554C03CD9055F4E42969600904DF1F4DB8
key = z3.BitVec("key", 418)s = z3.Solver()
s.add(enc(key) == cor)
s.check()
m = s.model()flag = long_to_bytes(m[key].as_long())
print(flag)
#b'flag{e88f88d7-4d75-462b-8447-bf4ab7aeab1a}'
4. 帕鲁被病毒攻击了

逆向为啥搞得像Misc!

图片啥也没有,把高度改长一点

得到一个压缩包,里面是一些样本文件

也不知道怎么找,纯Misc题 0n3_n00b_ru1n5_0n3_hundr3d_pr05

5. O2

elf头被改,第五位01改成02(64位)

F5失败,有个函数分析有问题

2356行分析失败了

好像是参数有什么错误,不过直接nop也没影响

重点就第26行

动调找找参数呢,密钥好像怪怪的

密文不知道是哪个,也许是obj

翻一下字符串有些奇怪的东西

定位一下

似乎是密文和key,input是个假的

#O2 wp
from string import printableenc = bytearray.fromhex("364d4d5c3e387e00421c597a0a7302144d5b70087e064619567336297d151f56770a7935424f2a780643")key = "PaluCTF"
#爆破
for i in range(len(enc)):for c in printable:if (ord(c) + ord(key[i % len(key)])) % 128 == enc[i]:print(c, end="")break
#来自Ciallo~(∠・ω<)⌒☆战队的wp
#flag{d80a0d76-23af-486e-a0bc-43a463eac552}
6. Reverse-签到(什么鬼名字,明明巨难)

Go语言写的,代码非常地难看

大致是把local.txt中的数据加密到encrypted.txt中了

这一部分实际上创建了一个Map集合

Go 语言 Map(集合) | 菜鸟教程

相当于制作了一个字典,将规定的字符映射到一个值(索引值)上

加密过程实际上就是 原字符+索引值

不过解有点多

#re签到 wp
map = {'a':3, 'l':1, 'f':4, 'g':2, '{':-1, '}':-2, '1':5, '2':7, '3':-3, '4':-3, '5':-3, '6':-3, '7':-3, '8':-3, '9':-3}
import string
import itertools  
table = "flag{123456789}"
enc = "jmdiz61904646906034535196{"
flag = [0]*len(enc)
def checkflag(idx,result):if(idx == -1):print("flag爆破完成!")for i in range(len(result)):print(chr(result[i]),end="")print("")returnfor j in table:if chr(ord(j) + map[j]) == enc[idx]:result[idx] = ord(j)checkflag(idx-1, result)if(j == 128 and result[idx] == 0):return
checkflag(25, flag)
'''
for i in range(0,len(enc)):for j in table:if chr(ord(j) + map[j]) == enc[i]:flag += j
print(flag)
'''
'''
flag爆破完成!
flag{14237171231367868421}
flag爆破完成!
flag{94237171231367868421}
flag爆破完成!
flag{14237971231367868421}
flag爆破完成!
flag{94237971231367868421}
flag爆破完成!
flag{14237179231367868421}
flag爆破完成!
flag{94237179231367868421}
flag爆破完成!
flag{14237979231367868421}
flag爆破完成!
flag{94237979231367868421}
flag爆破完成!
flag{14237171239367868421}
flag爆破完成!
flag{94237171239367868421}
flag爆破完成!
flag{14237971239367868421}
flag爆破完成!
flag{94237971239367868421}
flag爆破完成!
flag{14237179239367868421}
flag爆破完成!
flag{94237179239367868421}
flag爆破完成!
flag{14237979239367868421}
flag爆破完成!
flag{94237979239367868421}
flag爆破完成!
flag{14237171231367868429}
flag爆破完成!
flag{94237171231367868429}
flag爆破完成!
flag{14237971231367868429}
flag爆破完成!
flag{94237971231367868429}
flag爆破完成!
flag{14237179231367868429}
flag爆破完成!
flag{94237179231367868429}
flag爆破完成!
flag{14237979231367868429}
flag爆破完成!
flag{94237979231367868429}
flag爆破完成!
flag{14237171239367868429}
flag爆破完成!
flag{94237171239367868429}
flag爆破完成!
flag{14237971239367868429}
flag爆破完成!
flag{94237971239367868429}
flag爆破完成!
flag{14237179239367868429}
flag爆破完成!
flag{94237179239367868429}
flag爆破完成!
flag{14237979239367868429}
flag爆破完成!
flag{94237979239367868429}
'''
7. Misc签到
27880
30693
25915
21892
38450
23454
39564
23460
21457
36865
112
108
98
99
116
102
33719
21462
21069
27573
102
108
97
103
20851
27880
79
110
101
45
70
111
120
23433
20840
22242
38431
22238
22797
112
108
98
99
116
102
33719
21462
21518
27573
102
108
97
103

中文ASCII码对照表_汉字的ascii码对照表-CSDN博客

汉字字符集编码查询;中文字符集编码:GB2312、BIG5、GBK、GB18030、Unicode

也可以用脚本


ascii_text = '''
27880
30693
25915
21892
38450
23454
39564
23460
21457
36865
112
108
98
99
116
102
33719
21462
21069
27573
102
108
97
103
20851
27880
79
110
101
45
70
111
120
23433
20840
22242
38431
22238
22797
112
108
98
99
116
102
33719
21462
21518
27573
102
108
97
103
'''text = ""ascii_codes = ascii_text.strip().split()
for ascii_code in ascii_codes:char = chr(int(ascii_code))text += charprint("转换结果:", text)
#转换结果: 注知攻善防实验室发送plbctf获取前段flag关注One-Fox安全团队回复plbctf获取后段flag

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/661766.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最新即时聊天源码,支持视频语音聊天

最新即时聊天源码&#xff0c;支持视频语音聊天 网站手机电脑H5可打包APP、视频语音聊天、注册、添加好友、群聊创建、群管理、文件在线预览、群公告、后台管理 功能说明&#xff1a; 支持单聊和群聊&#xff0c;支持发送表情、图片、语音、视频和文件消息 单聊支持消息已读未…

java8 Stream流常用方法(持续更新中...)

java8 Stream流常用方法 1.过滤数据中年龄大于等于十八的学生2.获取对象中其中的一个字段并添加到集合(以学生姓名&#xff08;name&#xff09;为例)3.获取对象中其中的一个字段并转为其他数据类型最后添加到集合(以学生性别&#xff08;sex&#xff09;为例&#xff0c;将Str…

国产操作系统上如何比较软件版本 _ 统信UOS _ 麒麟KOS _ 中科方德

原文链接&#xff1a;国产操作系统上如何比较软件版本 | 统信UOS | 麒麟KOS | 中科方德 Hello&#xff0c;大家好啊&#xff01;在国产操作系统上管理软件版本是确保系统安全性和功能稳定性的关键一环。今天&#xff0c;我将向大家展示如何通过编写脚本在国产操作系统上检查软件…

【前端】-【防止接口重复请求】

文章目录 需求实现方案方案一方案二方案三 需求 对整个的项目都做一下接口防止重复请求的处理 实现方案 方案一 思路&#xff1a;通过使用axios拦截器&#xff0c;在请求拦截器中开启全屏Loading&#xff0c;然后在响应拦截器中将Loading关闭。 代码&#xff1a; 问题&…

C# Winform父窗体打开新的子窗体前,关闭其他子窗体

随着Winform项目越来越多&#xff0c;界面上显示的窗体越来越多&#xff0c;窗体管理变得更加繁琐。有时候我们要打开新窗体&#xff0c;然后关闭多余的其他窗体&#xff0c;这个时候如果一个一个去关闭就会变得很麻烦&#xff0c;而且可能还会出现遗漏的情况。这篇文章介绍了三…

记一次生产事故的排查和解决

一. 事故概述 春节期间, 生产系统多次出现假死不可用现象, 导致绝大部分业务无法进行. 主要表现现象为接口无法访问. 背景为900W客户表和近实时ES, 以及春节期间疫情导致的普通卖菜场景近似秒杀等. 二. 排查过程 优先排查了info, error, catalina日志, 发现以下异常: 主要的…

C语言——单链表实现数据增删查改

一.前言 嗨嗨嗨&#xff0c;我们又见面了。前面我们已经学习了关于数据结构中的顺序表&#xff0c;今天我们来学习数据结构中的单链表。废话不多说让我们直接开始吧。 二.正文 1.1链表的概念 链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺…

【Flask开发实战】HTML模板代码复用之extends使用

一、前言 在 HTML 开发中&#xff0c;尤其是在使用模板引擎&#xff08;如 Jinja2&#xff0c;常用于 Flask 应用&#xff09;时&#xff0c;extends 是一个非常有用的指令&#xff0c;它用于实现模板继承&#xff0c;从而达到代码复用的目的。这可以让你定义一个基本模板&…

三体中的二向箔

目录 描述 外观 基本原理 攻击范围及影响 副作用 保存方式 实战情况 二向箔是在中国科幻名匠刘慈欣的作品《三体3&#xff1a;死神永生》中登场的宇宙规律武器之一。首次出现于一艘来自歌者“母世界”的宇宙飞船。由于宇宙战争愈演愈烈&#xff0c;二向箔对于高等文明而…

Codigger数据篇(下):数据安全的全方位保障

在数字化浪潮中&#xff0c;数据已成为现代企业的核心财富。Codigger作为领先的数据服务平台&#xff0c;深知数据安全对于用户的重要性&#xff0c;因此在深挖数据价值的同时&#xff0c;我们始终坚守数据安全防线。 一、双重加密技术保障 Codigger平台运用先进的加密通信和…

python 基础语句

python 基础语句 1. import 语句 用于导入相应的包以供后面的代码使用 import xxx -将xxx包导入import pandas as pd - 导入 pandas 包并且将其所有的对象、方法、属性赋予 pd 对象from xxx1 import xxx2 - 从xxx1 包中导入 xxx2 方法 2. 输入输出语句 input&#xff0c;pr…

ip ssl证书无限端口网站

IP SSL证书是由CA认证机构颁发的一种特殊数字证书。大部分SSL数字证书都需要用户使用域名进行申请&#xff0c;想要对公网IP地址加密实现https访问就需要申请IP SSL证书。IP SSL证书采用了强大的加密算法&#xff0c;可以有效地防止数据在传输过程中被窃取或篡改&#xff0c;具…