御网杯2

news/2024/12/24 0:37:03/文章来源:https://www.cnblogs.com/minmaxm/p/18443037

Reverse

Reverse-ez_apk

用IDA进行打开,找到main函数

def decrypt(encrypted_text, decryption_key):

key_bytes = decryption_key.encode()

characters = list(encrypted_text)

decrypted_characters = [''] * len(characters)

for index, character in enumerate(characters):

if character in ['_', '{', '}']:

decrypted_characters[index] = character

elif 'a' <= character <= 'z':

# 应用解密逻辑

decrypted_characters[index] = chr(((ord(character) - ord('a') - (key_bytes[index % len(key_bytes)] - ord('a'))) % 26 + ord('a')))

else:

# 遇到非预期字符则停止解密

break

return ''.join(decrypted_characters)

# 解密密钥

decryption_key = "aptxcony"

# 密文

cipher_text = "fatd{sm_cgrmvc_ylvhokhuk_gxsgffc_wtec}"

# 解密结果

decrypted_result = decrypt(cipher_text, decryption_key)

print(decrypted_result)

加密处理,进行构造脚本

Reverse-jiqimao

用kali打开,进行反编译exe

发现不可以打开,那我进行反编译

找到一段字符

fVJXNjE0ODBpM2RrZmNSVzYxNDgwaTNka01BSlVPe25oc20=

这是一段base64编码,进行解密

凯撒偏移解码

}KP61480b3wdyvKP61480b3wdFTCNH{galf

再进行字符串逆序

Reverse-fenxi

找到一道类似的题目,进行参考一下[https://blog.csdn.net/weixin_52640415/article/details/123877043](https://blog.csdn.net/weixin_52640415/article/details/123877043" \t "_blank)

if (p[3]+p[5] != pow((I-------I).A,2) * (I-----I)+(I---I)) error(); // (3*3) ** 2 * 2 + 1 == 163

if (p[3]+p[4] != pow((o-----------o

| !

! !

! !

o-----------o).A,2)+(I---I)) error(); // (5*3) ** 2 + 1 == 226

if (p[4]*p[5] != (pow((o-------------o

| !

! !

! !

o-------------o).A,2)-(I---I))(I-----I)pow(I-------I,2)) error(); // ((63) ** 2 - 1)2* 3**2 = 5814

if (p[7]+p[8] != (o-----------o

|L </font>

| L </font>

| L </font>

| o-----------o|! // x=5,y=3,z=4

o | ! // 534 * 22 - (3*2)2 +1 == 205

L | !

L | !

L| !

o-----------o).V*pow(I-----I,2) - pow((o-------o // x=3,y=2

| !

! !

o-------o).A,2) + (I---I)) error();

尝试爆破得到字符

# 解密标志的第一部分

flag = ''

for first_char_code in range(0x20, 0x7f):

for second_char_code in range(0x20, 0x7f):

for third_char_code in range(0x20, 0x7f):

if first_char_code + second_char_code == 101 and </font>

second_char_code + third_char_code == 143 and </font>

first_char_code * third_char_code == 5035:

flag += chr(first_char_code) + chr(second_char_code) + chr(third_char_code)

print('[' + chr(first_char_code) + chr(second_char_code) + chr(third_char_code) + ']')

# 已找到的部分标志

#50_

# 解密标志的第二部分

for first_char_code in range(0x20, 0x7f):

for second_char_code in range(0x20, 0x7f):

for third_char_code in range(0x20, 0x7f):

if first_char_code + second_char_code == 226 and </font>

first_char_code + third_char_code == 163 and </font>

second_char_code * third_char_code == 5814:

flag += chr(first_char_code) + chr(second_char_code) + chr(third_char_code)

print('[' + chr(first_char_code) + chr(second_char_code) + chr(third_char_code) + ']')

# 已找到的部分标志

#pr3

# 解密标志的第三部分

for first_char_code in range(0x20, 0x7f):

for second_char_code in range(0x20, 0x7f):

for third_char_code in range(0x20, 0x7f):

if second_char_code + third_char_code == 205 and </font>

first_char_code + third_char_code == 173 and </font>

first_char_code * second_char_code == 9744:

flag += chr(first_char_code) + chr(second_char_code) + chr(third_char_code)

print('[' + chr(first_char_code) + chr(second_char_code) + chr(third_char_code) + ']')

# 已找到的部分标志

#Tty

# 解密标志的最后一部分

for first_char_code in range(0x20, 0x7f):

for second_char_code in range(0x20, 0x7f):

for third_char_code in range(0x20, 0x7f):

if first_char_code + second_char_code * third_char_code == 5375 and </font>

second_char_code + first_char_code * third_char_code == 4670 and </font>

first_char_code + second_char_code == 205:

flag += chr(first_char_code) + chr(second_char_code) + chr(third_char_code)

print('[' + chr(first_char_code) + chr(second_char_code) + chr(third_char_code) + ']')

# 已找到的部分标志

#_n0

# 添加剩余字符

flag += 'w'

# 输出最终的标志

print(flag)

50_pr3TtY_n0w

最后得到,进行包裹得到flag

Reverse-CSMazeee

首先查个壳发,现是32位的,并且有壳

寻找工具能进行脱壳处理

脱壳后是这个,然后把他放入dnspy中进行分析

这应该是一个迷宫程序

进行调试得到

00******0000

0000000**0

***000

100*0000

0**0

****00000000

是上下左右,走出迷宫

rdrrrrrddrruuurrrdddddllllllluull

连续点击100下得到flag

感悟

在这次御网杯的比赛中,我不仅在技术上有了显著的进步,更重要的是,在精神层面也得到了一次难得的洗礼,在一天的比赛中我体验到从感到新鲜,到渐渐疲惫,再到解出flag的欣喜。

在本次比赛中我对web有了更深的理解,通过实际操作,我发现理论知识与实战经验之间存在着巨大的差异,只有真正动手去做,才能体会到解决问题的乐趣。比赛中遇到的一些复杂问题,更是激发了我对网络安全领域的兴趣,使我意识到自己在这个领域的不足之处,同时也明确了未来努力的方向。

在做其他题目时候,我发现我的逆向能力还不强,我在以后得学习中会加强这方面的学习与理解,在密码学方面,我也有些欠缺 ,我对密码的基础概念还可以,但是通过本次比赛,我发现我对密码的理解还不够深刻,还有一些知识盲区,我意识到网络安全对我们的重要性,每个细节都决定了我们的成败。

总的来说,御网杯不仅是一场技术较量,更是一次自我超越的过程。在这里,我不仅收获了知识,更收获了友谊和成长。未来,我将继续努力,不断探索网络安全的奥秘,为自己也为社会贡献一份力量。同时我也要感谢比赛方给了我这次比赛学习的机会,我会更坚定的在网安的道路上走下去。

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

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

相关文章

Free5GC源码研究(4) - AUSF研究

本文研究AUthentication Server Function (AUSF) 主要实现的功能AUSF的概念 在开始研究其源代码之前,我们需要先对AUSF有一些概念上的认识。AUSF的主要技术文档是TS29.509,规定了AUSF提供哪些服务,其对应的API接口有哪些。总的来说,AUSF就是帮助其他NF,比如AMF,来认证一个…

manim边学边做--形状匹配

manim中有几个特殊的用于形状匹配的对象,它们的作用是标记和注释已有的对象,本身一般不单独使用。 形状匹配对象一共有4种:BackgroundRectangle:为已有的对象提供一个矩形的背景 Cross:用交叉线标记已有对象 SurroundingRectangle:用矩形框围住某个对象 Underline:为某个…

高级程序设计语言第2次作业

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/2024C/ 这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/2024C/homework/13282 学号:102300134 姓名:曾威 练习题目: 第一题: 目标:体现出整数的上溢,浮点数的上溢,浮点数的下溢 思路:命名一个整型…

Day07——数据类型

数据类型 1.强类型语言,要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用; ​ JAVA就是强类型语言 2.弱类型语言。 八大数据类型注意:在表示long类型时,数后面有L 表示float类型时,数后面有F或f 字符单个字,用单引号引用;字符串…

Docker实操过程

Docker实操过程 体会 知乎上搜“docker入门”搜到的笔记总是起一个赚噱头的标题,然后点进去一看,里面大多是一些入门内容的简单罗列,要么对于背景内容长篇大论让读者抓不住重点,要么对于命令API简单罗列,入门者甚至连这些API如何衔接使用,这些命令大概发生了什么可能都没…

谷歌收录批量查询,教你批量查询谷歌收录的方法

批量查询谷歌收录是网站管理员和SEO人员常见的需求,以下是一些实用的方法和步骤来实现这一目标: 一、使用Google Search Console(谷歌搜索控制台) 注册并验证网站:首先,在Google Search Console中注册并验证你的网站。这是获取网站在谷歌搜索结果中详细数据的基础。 下载…

修改Nacos2.4.1源码-适配达梦数据库麒麟ARM系统(国产XC化)

前言:应集团公司现在推广XC化,其中基础环境需要用麒麟ARM操作系统和达梦数据库,而官网的nacos默认适配mysql,需要重新编译源码来适配需要对接的数据库,2.4.2试验了一把,安装启动后 nacos 控制台出现 “创建命名空间失败 / 数据库语法问题”,经分析,问题出在源码的sql语…

怎么查看网站是否被谷歌收录,你会查看网站被谷歌收录的方法吗

查看网站是否被谷歌收录是一个相对简单的过程,以下是几种常用的方法,可以帮助你确定网站或其特定页面是否已被谷歌搜索引擎索引: 一、使用“site:”搜索指令 打开谷歌搜索引擎(Google)。 在搜索框中输入“site:你的网站域名”(注意使用英文冒号,并将“你的网站域名”替换…

操作系统:保护模式(二)内存模型

平坦内存模型 现代操作系统一般不会使用过于复杂的分段机制,而是采用平坦内存模型 + 分页模型来管理内存。 平坦内存模型(Flat Memory Model),这是现代操作系统(如 Linux 和 Windows)常用的内存模型。在这种模型中,所有段的段基址都为 0,段界限为 4GB,使得整个内存空间…

操作系统:保护模式(五)特权

特权机制 特权特权级数值越大,级别越小。通常,因为操作系统是为所有程序服务的,可靠性最高,而且必须对软硬件有完全的控制权,所以它的主体部分必须拥有特权级0,并处于整个环形结构的中心。也正是因为这样,操作系统的主体部分通常又被称做内核(Kernel、 Core)。 特权级1和…

操作系统:保护模式(一)GDT 与分段机制

GDT 与分段机制 CPU开机时运行于实模式,寻址方式是段寄存器 \(\times\) 10+偏移寄存器=物理地址,主要原因是因为 8086 地址线和数据线不匹配导致的。但是这种寻址方式既不安全也不支持现代操作系统所需的、多任务支持、cpu 特权模式等。 在实模式下,对于基址,变址寻址的寄存…

CSP2024-30

A 题意:将一个圆等分为 \(K\) 分,给出其中 \(n\) 个等分点的编号,\(x_i < x_{i + 1}\)。 有向边 \(i \to j\) 存在,当且仅当 \(j\) 是距离 \(i\) 最大的点(不唯一),且与图中其他边无交点(端点不算)。 求图中最多有多少条边。\(3 \le K \le 10^9, 3 \le n \le \min(…