ctfshow REVERSE re2 萌新赛 内部赛 七夕杯 WP

目录

re2

萌新赛

flag白给

签退 

数学不及格 

内部赛

批量生产的伪劣产品 

来一个派森 

好好学习 天天向上 

屏幕裂开了

七夕杯

逆向签到 

easy_magic 


re2

ida分析主函数,将flag.txt内容加密写入enflag.txt

这是密钥加密过程

标准rc4加密

简单异或解密密钥 

将enflag.txt进行rc4解密 

得flag{RC4&->ENc0d3F1le}

萌新赛

flag白给

查壳,有壳

upx解壳 

解壳成功,进入关键函数

找到flag

即flag{HackAv}

签退 

python逆向,用pycdc反编译或python反编译 - 在线工具

得到python源代码

import string
c_charset = string.ascii_uppercase + string.ascii_lowercase + string.digits + '()'
flag = 'BozjB3vlZ3ThBn9bZ2jhOH93ZaH9'def encode(origin_bytes):c_bytes = [ '{:0>8}'.format(str(bin(b)).replace('0b', '')) for b in origin_bytes ]resp = ''nums = len(c_bytes) // 3remain = len(c_bytes) % 3integral_part = c_bytes[0:3 * nums]for x in [0,6,12,18]:tmp_unit = [][int(tmp_unit[x:x + 6], 2)]resp += ''.join([ c_charset[i] for i in tmp_unit ])integral_part = integral_part[3:]if remain:remain_part = ''.join(c_bytes[3 * nums:]) + (3 - remain) * '0' * 8tmp_unit = [ int(remain_part[x:x + 6], 2) for x in [0,6,12,18] ][:remain + 1]resp += ''.join([ c_charset[i] for i in tmp_unit ]) + (3 - remain) * '.'return rend(resp)def rend(s):def encodeCh(ch):f = lambda x: chr(((ord(ch) - x) + 2) % 26 + x)if ch.islower():return f(97)if (None,).isupper():return f(65)return (''.join,)((lambda .0: pass)(s))

这里的encode其实就是base64加密,换码表有一点改动,对密文没有影响,rend函数就是字符右移两位,写出rend逆向脚本

def rend_reverse(s):decoded = []for c in s:if c.islower():# 小写字母前移2位(循环)decoded_char = chr((ord(c) - 97 - 2) % 26 + 97)elif c.isupper():# 大写字母前移2位(循环)decoded_char = chr((ord(c) - 65 - 2) % 26 + 65)else:decoded_char = c  # 数字和括号不变decoded.append(decoded_char)return ''.join(decoded)encrypted_flag = 'BozjB3vlZ3ThBn9bZ2jhOH93ZaH9'
after_rend = rend_reverse(encrypted_flag)
print("逆移位后字符串:", after_rend)
# ZmxhZ3tjX3RfZl9zX2hfMF93XyF9

赛博厨子base64解密 

flag{c_t_f_s_h_0_w_!} 

数学不及格 

分析一下主逻辑

判断了四个方程,并且v9=f(v4)

双击跟进f()函数,返回斐波那契数列第n项

于是(v9-v10)+(v9-v11)+(v9-v12)+(v4+v12+v11+v10)=3*v9+v4=0x19d024e75ff,十进制为1773860189695,又v9=f(v4)

写脚本爆破 

for v4 in range(3,100):a = [1, 1]for i in range(2,v4):v9=a[i-1]+a[i-2]if 3*v9+v4 == 1773860189695:print(v4)print(v9)a.append(v9)
#58
#591286729879

 得到v4,v9后解出argv数组

v9=591286729879
v4=58
print(hex(v9-0x233F0E151C))
#argv[1]=0x666c61677b
print(hex(v9-0x1B45F81A32))
#argv[2]=0x6e65776265
print(hex(v9-0x244C071725))
#argv[3]=0x655f686572
print(hex(v4+0x6543))
#argv[4]=0x657d

赛博厨子一键16进制解密 

得flag{newbee_here}

内部赛

批量生产的伪劣产品 

apk文件,jadx打开,查看AndroidManifest.xml

找到app入口appinventor.ai_QA629A242D5E83EFA948B9020CD35CB60.checkme.a

看到ctfshow{群主最爱36D} 

来一个派森 

python反编译工具pyinstxtractor.py得到.pyc文件

python反编译 - 在线工具得到python源码

def b58encode(tmp = None):tmp = list(map(ord, tmp))temp = tmp[0]base58 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'for i in range(len(tmp) - 1):temp = temp * 256 + tmp[i + 1]tmp = []while None:temp = temp // 58if temp == 0:breaktemp = ''for i in tmp:temp += base58[i]tmp = []for i in range(len(temp)):tmp.append(chr(ord(temp[i]) ^ i))check = ['A','5','q','O','g','q','d','\x7f','[','\x7f','s','{','G','A','x','`','D','@','K','c','-','c',' ','G','+','+','|','x','}','J','h','\\','l']if tmp == check:return 1flag = input('输入flag:')
if b58encode(flag):print('you win')
else:print('try again')

标准的base58,最后做了一步异或,异或脚本

tmp=['A','5','q','O','g','q','d','\x7f','[','\x7f','s','{','G','A','x','`','D','@','K','c','-','c',' ','G','+','+','|','x','}','J','h','\\','l']
for i in range(len(tmp)):temp.append(chr(ord(tmp[i]) ^ i))
for i in range(len(temp)):print(temp[i],end="")
#A4sLctbxSvypKLvoTQYp9v6P32fcaWvCL

再base58解密

得ctfshow{zhe_bu_shi_flag}

好好学习 天天向上 

[ctf.show.reverse] 来一个派森,好好学习天天向上_ctfshow 好好学习 天天向上-CSDN博客 

flag{good_good_study_day_day_up}

屏幕裂开了

jadx打开 

还有native层 

定位关键函数checkflag 

很明显是rc4加密,但解密不出来

所以S盒打乱那部分要重复 99999 次,贴个大佬的脚本

s = [i for i in range(256)]
k = (b"InfinityLoop"*22) [0:256]for hit_count in range(99999):j = 0for i in range(256):j = (s[i]+j+k[i])%256s[i],s[j] = s[j],s[i]answer =[0xA6,0x3D,0x54,0x0B0,0x74,0xCC,0xBD,0x2A,0x4A,0x0DE,0x0BD,0x35,0x0D1,0x1D,0x80,0x32,0x5F,0x64,0x2F,0x0C5,0x0DD,0x11,0x3E,0x95,0x0CC,0x17,0x13,0x0E5,0x5E,0x65,0x0CE,0x42,0x9E,0x47,0x0C8,0x0F3,0x4D,0x8A,0x0A6,0x1F,0x0F0,0x50,0x27,0x0A2,0x28,0x81,0x24,0x0A7,0x0B4,0x90,0x0FC,0x93,0x8A,0x0C1,0x77,0x0D5,0x16,0x1E,0x0FD,0x87,0x0C7,0x0BB,0x0B3,0x0]v10,v11 = 0,0
v14 = s 
tab = [0]*63
for j in range(63):v11 = v11+1v10 = (v14[v11] + v10)& 0xffv14[v11],v14[v10] = v14[v10],v14[v11]tab[j] = v14[(v14[v10]+ v14[v11]) %256]flag = [answer[i]^tab[i] for i in range(63)]
print(bytes(flag))
#flag{i_hope_you_didnt_click_the_button_99999__justRE_in_Static}

七夕杯

逆向签到 

分析主逻辑汇编代码 

用deepseek辅助 

mov     rax, 7B776F6873667463h  ; 小端序为 "ctfshow{"
mov     rdx, 5F6E6769735F6572h  ; 小端序为 "re_sign_"
mov     rax, 5F797361655F7369h  ; 小端序为 "is_easy_"
mov     [rbp+var_18], 7Dh        ;        结束符 "}"

ctfshow{re_sign_is_easy_}

easy_magic 

看到一串16进制,16进制转字符串失败 

猜测为md5MD5免费在线解密破解_MD5在线加密-SOMD5

得ctfshow{7x_flag_is_here} 

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

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

相关文章

【Linux】线程库

一、线程库管理 tid其实是一个地址 void* start(void* args) {const char* name (const char *)args;while(true){printf("我是新线程 %s ,我的地址:0x%lx\n",name,pthread_self());sleep(1);}return nullptr; }int main() {pthread_t tid…

深入剖析 Android Compose 框架的自动动画:AnimatedVisibility 与 AnimatedContent(二十四)

深入剖析 Android Compose 框架的自动动画:AnimatedVisibility 与 AnimatedContent 引言 在 Android 应用开发中,动画是提升用户体验的重要手段。它能够让界面元素的显示与隐藏、状态的切换变得更加自然和流畅,避免生硬的变化给用户带来不佳…

文件上传的小点总结(1)

2.文件类型绕过 问题插入:BP无法拦截本地流量 ①插件限制 不代理的地址列表通常写有localhost和127.0.0.1,把本地的全都删掉,然后应用保存。 ②浏览器限制 Firefox浏览器设置:检查浏览器代理配置和proxy listeners都没问题后&…

AI基础01-文本数据采集

本篇文章是学习文本数据的采集,作为人工智能训练师或者数据分析师有时需要先获取数据,然后进行数据清洗、数据标注。很明显数据采集是后续步骤的基础。 1)数据采集定义 数据采集:data acquisition,DAQ 又称为数据获取…

深度学习Python编程:从入门到工程实践

第一章 Python语言概述与生态体系 1.3 Python在工业界的应用场景 # 示例:使用FastAPI构建RESTful接口 from fastapi import FastAPI from pydantic import BaseModelapp = FastAPI()class Item(BaseModel):name: strprice: float@app.post("/items/") async def cr…

使用CSS3实现炫酷的3D翻转卡片效果

使用CSS3实现炫酷的3D翻转卡片效果 这里写目录标题 使用CSS3实现炫酷的3D翻转卡片效果项目介绍技术要点分析1. 3D空间设置2. 核心CSS属性3. 布局和定位 实现难点和解决方案1. 3D效果的流畅性2. 卡片内容布局3. 响应式设计 性能优化建议浏览器兼容性总结 项目介绍 在这个项目中…

HAl库开发中断方式接收Can报文的详细流程

下面给出一个基于 HAL 库的中断方式接收 CAN 报文的详细流程说明,描述每一步的硬件配置、软件调用和中断处理机制,而不涉及具体代码细节,只讲解整体原理和步骤: 在使用 HAL 库时,不需要手动清除中断标志位。原因如下&…

【读书笔记】华为《从偶然到必然》

note 华为的成功并非偶然,而是通过IPD体系、投资组合管理、平台战略等系统性工具,将研发投资转化为可持续的商业竞争力。书中强调的“管理即内部因素”理念,揭示了企业规模扩张与管理能力匹配的深层规律,为高科技企业提供了可借鉴…

6.4考研408数据结构图论核心知识点深度解析

一、最小生成树(Minimum Spanning Tree) 1.1 Prim算法 易错点与难点 lowcost数组更新逻辑 错误将已加入生成树的顶点距离重置为0后继续参与计算,导致后续顶点选择错误未正确处理非连通图情况,可能陷入死循环(需结合visited数组判断)示例错误:for(int j=0; j<G.vexn…

HashMap添加元素的流程图

文章目录 JDK7 vs JDK8 的 HashMap 结构变化Java8 中哈希表的红黑树优化机制HashMap 添加元素的完整流程解析1. 计算 key 的哈希值并确定索引2. 检查该索引位置是否已有元素3. 处理哈希冲突4. 判断当前存储结构&#xff08;链表还是红黑树&#xff09;5. 判断链表长度是否超过 …

Excel(进阶篇):powerquery详解、PowerQuery的各种用法,逆透视表格、双行表头如何制作透视表、不规则数据如何制作数据透视表

目录 PowerQuery工具基础修改现有数据理规则PowerQuery抓取数据的两种方式多文件合并透视不同表结构多表追加数据透视追加与合并整理横向表格:逆透视 数据用拆分工具整理数据算账龄 不等步长值组合合并文件夹中所有文件PowerQuery处理CSV文件双行表头、带合并单元格如何做数据…

从零开始:使用 Cython + JNI 在 Android 上运行 Python 算法

1. 引言 在 Android 设备上运行 Python 代码通常面临性能、兼容性和封装等挑战。尤其是当你希望在 Android 应用中使用 Python 编写的计算密集型算法时&#xff0c;直接运行 Python 代码可能导致较高的 CPU 占用和较差的性能。为了解决这个问题&#xff0c;我们可以使用 Cytho…

请为下面的html添加一个修改按钮,以便对书名、价格进行修改

下面的HTML段落&#xff0c;在书名和价格输入错误的情况下&#xff0c;无法进行修改。添加一个按钮&#xff0c;对已经输入的信息进行修改。 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title></…

FFmpeg + ‌Qt‌ 简单视频播放器代码

一个基于 ‌FFmpeg 4.x‌ 和 ‌Qt‌ 的简单视频播放器代码示例&#xff0c;实现视频解码和渲染到 Qt 窗口的功能。 1&#xff09;ffmpeg库界面&#xff0c;视频解码支持软解和硬解方式。 2&#xff09;QImage/QPixmap显示视频图片。 ‌1. Qt 项目配置&#xff08;.pro 文件&…

如何在百度搜索上删除与自己名字相关的资料

个人信息的网络足迹如同一张无形的网&#xff0c;将我们与世界的每一个角落紧密相连。然而&#xff0c;当某些与自己名字相关的资料不再希望被公众轻易检索到时&#xff0c;如何在百度搜索中有效“隐身”&#xff0c;成为了一个亟待解决的问题。面对复杂多变的网络环境&#xf…

WebSocket:现代实时通信协议的深度解析与实践

一、背景与演进历程 1.1 传统实时通信的困境 // 典型的HTTP轮询伪代码 while(true) {auto response http_client.get("/messages");if(response.has_data()) process(response);std::this_thread::sleep_for(1s); // 固定间隔轮询 } 高延迟&#xff1a;轮询间隔导…

[贪心算法]最长回文串 增减字符串匹配 分发饼干

1.最长回文串 我们可以存下每个字母的个数&#xff0c;然后分类讨论 如果是奇数就减一加到结果中如果是偶数就直接加入即可 最后判断长度跟原字符串的差距&#xff0c;如果小于原数组说明有奇数结果1 class Solution { public:int longestPalindrome(string s) {int ret0;//1.计…

STM32 的tf卡驱动

基于STM32的TF卡驱动的基本实现步骤和相关代码示例,主要使用SPI接口来与TF卡进行通信。 硬件连接 将TF卡的SPI接口与STM32的SPI引脚连接,通常需要连接SCK(时钟)、MOSI(主出从入)、MISO(主入从出)和CS(片选)引脚。 软件实现 初始化SPI 配置SPI的工作模式、时钟频率…

目标检测中的非极大值抑制(NMS)原理与实现解析

一、技术背景 在目标检测任务中&#xff0c;模型通常会对同一目标生成多个重叠的候选框&#xff08;如锚框或预测框&#xff09;。非极大值抑制&#xff08;Non-Maximum Suppression, NMS&#xff09; 是一种关键的后处理技术&#xff0c;用于去除冗余的检测结果&#xff0c;保…

探秘鸿蒙 HarmonyOS NEXT:鸿蒙存储核心技术全解析

引言 本文章基于HarmonyOS NEXT操作系统&#xff0c;API12以上的版本。 在 ArkTS (ArkUI 框架) 中&#xff0c;用户首选项 (Preferences) 和 持久化存储 (PersistentStorage) 都用于数据存储&#xff0c;但它们有不同的应用场景和特点。 1. 用户首选项 (Preferences) 概念&a…