单身杯_RE

唉,遇到几个比较繁琐的题目,搞的心态都有点炸了,0.0

magic

这题也就那样,初时想要用用 angr 跑了一下,没搞出来,之后再去好好搞清楚吧,也不是特别清楚运用。
然后就自己去看了,就是有三个 check 函数,直接把代码 copy 下来,循环爆破一下就行了。

不能动调
在这里插入图片描述
也不知道要干嘛
在这里插入图片描述
输入自动代码?angr?
还是要仔细一点,flag正确那个函数中有一个TEA加密,漏掉了 0.0
解一下直接得 flag

#include <stdio.h>
__int64* tea(__int64* a1) {int v2 = 1865817980*32;unsigned int v3 = *a1;unsigned int v4 = a1[1];for (int i = 0; i <= 31; ++i){v4 -= (v3 + v2) ^ (16 * v3 + 31) ^ ((v3 >> 5) + 124);v3 -= (v4 + v2) ^ (16 * v4 + 111) ^ ((v4 >> 5) + 54);v2 -= 1865817980;}*a1 = v3;a1[1] = v4;return a1;
}
int main() {__int64 v14[27];v14[0] = 1350288828LL;v14[1] = 731421218LL;v14[2] = 1671728960LL;v14[3] = 2831241988LL;v14[4] = 1951471770LL;v14[5] = 2319350991LL;v14[6] = 1657444641LL;v14[7] = 236674178LL;v14[8] = 3281411241LL;v14[9] = 3592850081LL;v14[10] = 581718275LL;v14[11] = 2597100926LL;v14[12] = 575307203LL;v14[13] = 3582510352LL;v14[14] = 3410176996LL;v14[15] = 3064018193LL;v14[16] = 1278546908LL;v14[17] = 1875831745LL;v14[18] = 2741062944LL;v14[19] = 2277786060LL;v14[20] = 2717472665LL;v14[21] = 1047384394LL;v14[22] = 1864926511LL;v14[23] = 1387033695LL;v14[24] = 2442177625LL;v14[25] = 383659259LL;for (int i = 0; i < 26; i += 2) {tea(&v14[i]);}for (int i = 0; i < 26; i++) {printf("%c", v14[i]);}return 0;
}

所以还是不能心急,要静下来

signin_keys

int __cdecl main(int argc, const char **argv, const char **envp)
{char *v3; // ediint v4; // ebxsize_t v5; // eaxchar *v6; // eaxchar key[16]; // [esp+10h] [ebp-FCh] BYREFchar v9[16]; // [esp+20h] [ebp-ECh] BYREFchar v10[16]; // [esp+30h] [ebp-DCh] BYREFchar Src[16]; // [esp+40h] [ebp-CCh] BYREFint v12[22]; // [esp+50h] [ebp-BCh] BYREFint v13[25]; // [esp+A8h] [ebp-64h] BYREFv3 = ch;                                      // 12/4-.v4 = 0;__main();v12[5] = 0;v12[4] = 0;v12[0] = 1732584193;v12[1] = -271733879;v12[2] = -1732584194;v12[3] = 271733878;v13[5] = 0;                                   // 用来md的应该,不影响flagv13[4] = 0;v13[0] = 1732584193;v13[1] = -271733879;v13[2] = -1732584194;v13[3] = 271733878;puts("input the keys and then I will give you flag:");while ( 1 ){v5 = strlen(v3);if ( v5 ){Src[0] = *v3 - v4;if ( v5 != 1 ){Src[1] = (v3[1] + 1 - v4) ^ 1;if ( v5 != 2 ){Src[2] = (v3[2] + 2 - v4) ^ 2;if ( v5 != 3 ){Src[3] = (v3[3] + 3 - v4) ^ 3;if ( v5 != 4 ){Src[4] = (v3[4] + 4 - v4) ^ 4;if ( v5 != 5 ){Src[5] = (v3[5] + 5 - v4) ^ 5;if ( v5 != 6 ){Src[6] = (v3[6] + 6 - v4) ^ 6;if ( v5 != 7 ){Src[7] = (v3[7] + 7 - v4) ^ 7;if ( v5 == 9 )Src[8] = (v3[8] + 8 - v4) ^ 8;}}}}}}}v6 = &Src[v5];}else{v6 = Src;}*v6 = 0;++v4;MD5Update(v12, Src, strlen(Src));MD5Final((int)v10, v12);printf("input the %dth key: ", v4);scanf("%s", key);MD5Update(v13, key, strlen(key));MD5Final((int)v9, v13);if ( v9[0] != v10[0]|| v9[1] != v10[1]|| v9[2] != v10[2]|| v9[3] != v10[3]|| v9[4] != v10[4]|| v9[5] != v10[5]|| v9[6] != v10[6]|| v9[7] != v10[7]|| v9[8] != v10[8]|| v9[9] != v10[9]|| v9[10] != v10[10]|| v9[11] != v10[11]|| v9[12] != v10[12]|| v9[13] != v10[13]|| v9[14] != v10[14]|| v9[15] != v10[15] ){break;}v3 += 10;if ( v4 == 8 ){puts("the keys is right, your flag is: flag{md5(your input)}");system("pause");return 0;}}puts("no no no, the key is wrong!");system("pause");return 0;
}

看了一下 wp :大致理解了,就是原来有一个 Src 被赋值后进行 md5,然后输入
key,也进行 md5,比较两个是否相同,应该是要 8 个key
要注意的是== v3 的值==
在这里插入图片描述

# from hashlib import md5
# v3 = [b'12/4-.', b'745.30', b'cdaf_`', b'42764/', b'uyirp{', b'fvigdm', b'\x80~exhl', b'xzv{zbf']
# data = []
# for i in range(len(v3)):
#     v4 = 0
#     for j in range(len(v3[i])):
#         # Calculate the transformed value according to the given formula
#         transformed_value = (v3[i][j] + j - v4) ^ j
#         data.append(transformed_value)
#         v4 += 1
# print("Transformed data:", data)
# # Convert data list to bytes and compute MD5 hash
# hash_value = md5(bytes(data)).hexdigest()
# print("MD5 hash:", hash_value)flag = []
b = [b'12/4-.', b'745.30', b'cdaf_`', b'42764/', b'uyirp{', b'fvigdm', b'\x80~exhl', b'xzv{zbf']
for v4, ch in enumerate(b):flag += [(v + i - v4) ^ i for i, v in enumerate(ch)]print(bytes(flag))
from hashlib import md5
print(md5(bytes(flag)).hexdigest())print('-----------')from hashlib import md5
b = [b'12/4-.', b'745.30', b'cdaf_`', b'42764/', b'uyirp{', b'fvigdm', b'\x80~exhl', b'xzv{zbf']
flag = []
index = 0
for v4 in range(len(b)):ch = b[v4]for i in range(len(ch)):transformed_value = (ch[i] + i - v4) ^ iflag.append(transformed_value)index += 1
print(bytes(flag))
print(md5(bytes(flag)).hexdigest())

这个enumerate获取索引和值的方法需要学一下了,最近经常在wp遇到。

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

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

相关文章

从实时监控到风险智能预警:EasyCVR视频AI智能监控技术在工业制造中的应用

随着科技的不断进步和工业制造领域的持续发展&#xff0c;传统的生产管理方式正逐渐转型&#xff0c;迈向更加智能、高效和安全的新阶段。在这个变革过程中&#xff0c;视频智能监控技术凭借其独特的优势&#xff0c;成为工业制造领域的管理新引擎&#xff0c;推动着从“制造”…

“删错文件后如何高效挽救?两大恢复策略全解析“

在数字化日益深入生活的今天&#xff0c;数据已成为我们工作、学习和娱乐不可或缺的一部分。然而&#xff0c;删错文件的经历却如同数字世界中的一场“小插曲”&#xff0c;不经意间就可能让我们陷入数据丢失的困境。无论是误触删除键、清空回收站&#xff0c;还是软件故障导致…

springboot中通过jwt令牌校验以及前端token请求头进行登录拦截实战

前言 大家从b站大学学习的项目侧重点好像都在基础功能的实现上&#xff0c;反而一个项目最根本的登录拦截请求接口都不会写&#xff0c;怎么拦截&#xff1f;为什么拦截&#xff1f;只知道用户登录时我后端会返回一个token&#xff0c;这个token是怎么生成的&#xff0c;我把它…

Matlab中collectPlaneWave函数的应用

查看文档如下&#xff1a; 可以看出最多5个参数&#xff0c;分别是阵列对象&#xff0c;信号幅度&#xff0c;入射角度&#xff0c;信号频率&#xff0c;光速。 在下面的代码中&#xff0c;我们先创建一个3阵元的阵列&#xff0c;位置为&#xff1a;&#xff08;-1,0,0&#x…

项目管理工具评测:2024年国内外最顶级的10款项目管理工具排行

国内外涌现出众多优秀的项目管理工具&#xff0c;它们各自在功能、易用性、集成能力等方面展现出独特优势。以下是国内外顶级的10款项目管理工具&#xff1a; 一、进度猫 推荐理由&#xff1a;进度猫以其直观的任务管理和进度跟踪功能&#xff0c;成为许多团队和项目的首选…

javaweb学习day4--《maven篇》maven的项目创建及其依赖管理详解(基于最新版本的idea)

一、前言 javaweb学习的第四天&#xff0c;不知道今天你们是否坚持下去了。今天学习到的是maven&#xff0c;温馨提示一下&#xff0c;idea中自带maven不用自行去下载了。前期的配置工作太过复杂了&#xff0c;小编感觉自己能力有限并不能将其讲的太清楚&#xff0c;还请大家在…

PlugLink的技术架构实例解析(附源码)

在探讨PlugLink这一开源应用的实际应用与技术细节时&#xff0c;我们可以从其构建的几个核心方面入手&#xff0c;结合当前AI编程的发展趋势&#xff0c;为您提供既有实例又有深度解析的内容。 PlugLink的技术架构实例解析 前端技术选型 —— layui框架&#xff1a; PlugLi…

maven——(重要)手动创建,构建项目

创建项目 手动按照maven层级建好文件夹&#xff0c;并写上java&#xff0c;测试代码和pom文件 构建项目 在dos窗口中执行如下命令 compile编译 当前maven仓库中什么都没有。 在pom所在层级下&#xff0c;执行&#xff1a; mvn compile 就开始显示下面这些&#xff0c;…

MQTT是什么,物联网

写文思路&#xff1a; 以下从几个方面介绍MQTT&#xff0c;包括&#xff1a;MQTT是什么&#xff0c;MQTT和webSocket的结合&#xff0c;以及使用场景&#xff0c; 一、MQTT是什么 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的发布/订阅消息…

JavaScript(7)——数组

JavaScript中数组的用法与Java差不多&#xff0c;但还是有一些区别 声明数组 语法: let 数组名 [数据1,数据2,数据...] let arr new Array(数据1,数据2,...数据n) 添加数据 数组.push()方法将一个或多个元素添加到数组末尾&#xff0c;并返回该数组新长度 <script>…

[k8s源码]1.client-go集群外部署

client-go是由k8s发布且维护的专门用于开发者和kubernetes交互的客户端库。它支持对k8s资源的CRUD操作&#xff08;create、read、update、delete&#xff09;&#xff0c;事件监听和处理&#xff0c;访问kubernetes集群的上下文和配置。 client go是独立于kubernetes集群之外…

SpringBoot项目架构实战之“网关zuul搭建“

第三章 网关zuul搭建 前言&#xff1a; 1、主要功能 zuul主要提供动态路由&#xff08;内置ribbon实现&#xff09;和过滤&#xff08;可以做统一鉴权过滤器、灰度发布过滤器、黑白名单IP过滤器、服务限流过滤器&#xff08;可以配合Sentinel实现&#xff09;&#xff09;功能…

css简单易懂的加载动画,看不会算我输好吧

效果展示 步骤 第一阶段 先准备结构&#xff0c;并且放置12个div&#xff0c;每一个div旋转30*n度&#xff0c; 做一个圆圈 dom <div class"modal"><div class"loading"><div class"item1"></div><div class&quo…

Vue 项目中 history 路由模式的使用

在最近帮客户开发的一个项目中&#xff0c;由于项目的特殊性&#xff0c;需要用到 Vue 中的 history路由模式。该模式使用时会涉及到“上传白屏”和“刷新 404 问题”。在帮助客户解决这两个问题的过程中&#xff0c;总结问题的解决方案并记录下来&#xff0c;希望能够保留这篇…

分布式训练

一、分布式计算 跟多GPU不同是&#xff1a;数据不是从主存拿的&#xff0c;是在分布式文件系统拿的&#xff0c;有多个工作站&#xff0c;工作站中有多个GPU&#xff0c;通过网络读取数据到GPU中&#xff0c;GPU通过网络接收到来自参数服务器的参数进行运算计算梯度&#xff0c…

怎样免费在线文字转语音?5个配音工具一键包揽

日常在享受有声读物的乐趣时&#xff0c;不知道大家是否也曾渴望将手中的精彩文本以生动的声音演绎出来&#xff1f; 无论是为了自我沉浸&#xff0c;还是为家人朋友创造独特的听觉盛宴&#xff0c;一款支持文本转语音的配音软件都能成为你的得力助手。它不仅能让文字跃然耳边…

【C++深度探索】全面解析多态性机制(一)

hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#xff1a;大耳朵土土垚的博客 &#x1…

演唱会售票系统(Springboot+MySQL+Mybatis+BootStrap)

本演唱会售票系统结合了多个流行的技术栈&#xff0c;提供了全面的功能模块&#xff0c;包括用户和管理员两个角色。前端采用Bootstrap框架设计响应式界面&#xff0c;后端采用Spring Boot和MyBatis Plus实现业务逻辑和数据库操作&#xff0c;Sa-Token确保系统的安全性。通过这…

深入分析与解决4.3问题:iOS应用版本更新审核被拒原因解析

深入分析与解决4.3问题&#xff1a;iOS应用版本更新审核被拒原因解析 在iOS应用开发和发布过程中&#xff0c;遇到4.3问题&#xff08;设计 - 垃圾邮件&#xff09;是一个常见且令人头疼的情况。即使您的应用已成功发布其第一个版本&#xff0c;但在进行版本更新时&#xff0c…

【机器学习】初学者经典案例(随记)

&#x1f388;边走、边悟&#x1f388;迟早会好 一、概念 机器学习是一种利用数据来改进模型性能的计算方法&#xff0c;属于人工智能的一个分支。它旨在让计算机系统通过经验自动改进&#xff0c;而不需要明确编程。 类型 监督学习&#xff1a;使用带标签的数据进行训练&…