NSSCTF reserve wp--非常简单的逻辑题

也可参考这篇文章:

本题并不是拖入ida中,进行静态分析,下载文件后文件名是py,我们将其重命名(即修改后缀为.py) (如图)

打开后分析以下代码

逆向一下有点麻烦,看了大佬的题解,说是直接正向爆破一下:

flag = ''

result = 'v0b9n1nkajz@j0c4jjo3oi1h1i937b395i5y5e0e$i'

s = 'wesyvbniazxchjko1973652048@$+-&*<>'

for i in range(len(result)//2):

    for j in range(32,126):

        s1 = j//17

        s2 = j%17

        a=(s1+i)%34

        b=-(s2+i+1)%34

       

        if (result[2*i]==s[a] and result[2*i+1]==s[b]):

            flag+=chr(j)

            break

       

print(flag)

下面详细分析一下中间四步和if循环:

中间四步目的是为了找到原始字符 j 在加密过程中是如何被转换成加密字符串 result 中的两个字符的。

1.计算 s1 和 s2:

s1 = j//17

s2 = j%17

  • s1 = j//17: 这一步计算了原始字符 j 的 ASCII 码值除以 17 的商。在加密过程中,这个商用于确定 s 字符串中的第一个字符的索引。
  • s2 = j%17: 这一步计算了原始字符 j 的 ASCII 码值除以 17 的余数。在加密过程中,这个余数用于确定 s 字符串中的第二个字符的索引。

这两个值 s1 和 s2 是将原始字符 j 的 ASCII 码值分解为两部分,这两部分随后被用来从 s 字符串中选择字符。

2.计算索引 a 和 b:

a=(s1+i)%34

b=-(s2+i+1)%34

  • a=(s1+i)%34: 这一步计算了 s 字符串中第一个字符的索引。由于加密过程中使用了 i(当前字符的索引)和 s1(原始字符 ASCII 码值的商),因此这里也要使用 i 来逆向计算索引 a。取模 34 是因为 s 字符串的长度是 34。
  • b=-(s2+i+1)%34: 这一步计算了 s 字符串中第二个字符的索引。同样地,它使用了 i 和 s2(原始字符 ASCII 码值的余数)。这里使用 - 是因为加密过程中使用了负索引来从字符串的末尾选择字符。取模 34 同样是因为 s 字符串的长度是 34。

在加密过程中,原始字符 j 的 ASCII 码值被分解为两部分,这两部分随后被用来从 s 字符串中选择两个字符,并将它们组合起来形成加密结果的一部分。通过这个过程,我们可以从加密结果中提取出原始字符 j。

分析一下if语句:

1.分析条件检查:

if (result[2*i]==s[a] and result[2*i+1]==s[b]):

这个条件检查包含两个部分,它们必须同时满足:

  • result[2*i]==s[a]: 这检查加密结果 result 中的第 2*i 个字符是否与我们通过当前猜测字符 j 计算出的 s 字符串中的索引 a 对应的字符相同。
  • result[2*i+1]==s[b]: 这检查加密结果 result 中的第 2*i+1 个字符是否与我们通过当前猜测字符 j 计算出的 s 字符串中的索引 b 对应的字符相同。

这两个条件一起确保了通过当前的 j 值计算出的两个字符能够精确地匹配加密结果 result 中的对应字符。

2.如果条件满足:

flag+=chr(j)

如果上述条件为真,即我们找到了正确的字符 j,那么我们就将这个字符(通过 chr(j) 转换为字符)添加到 flag 字符串中。这是还原原始 flag 的过程。

3.跳出内层循环:

break

一旦找到正确的字符,就没有必要继续尝试其他字符了,因此使用 break 语句跳出内层循环。这可以节省时间,因为我们已经找到了当前字符的正确值,可以继续寻找下一个字符。

总结来说,这个 if 循环的作用是:

  • 验证当前的猜测字符 j 是否能够产生加密结果 result 中的对应字符。
  • 如果可以,则将这个字符添加到 flag 中,并继续寻找下一个字符。
  • 如果不可以,则继续尝试下一个可能的字符,直到找到正确的字符为止。

这个过程重复进行,直到 flag 字符串中的所有字符都被找到。

Flag{Fake_RERE_QAQ}

也可参考这篇文章:NSSCTF RE [SWPUCTF 2021 新生赛]非常简单的逻辑题-CSDN博客

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

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

相关文章

萱仔环境记录——git的使用流程:以上传一个项目进入GitHub仓库为例子

前段时间我已经不使用学校的电脑了&#xff0c;在自己的笔记本上安装了git&#xff0c;准备好好把我这几年做的项目整理一下进行开源&#xff0c;由于前几次的面试&#xff0c;一些公司考核到了git的用法&#xff0c;虽然平时我也在使用git对自己的项目进行管理&#xff0c;但还…

华为 HCIP-Datacom H12-821 题库 (9)

有需要题库的可以看主页置顶 V群进行学习交流 1.以下关于 RSTP 保护功能的描述&#xff0c;错误的是哪一选项&#xff1f; A、环路保护可以部署在根端口上&#xff0c;以防网络中形成环路 B、环路保护可以部署在Alternate 端口上&#xff0c;以防网络中形成环路 C、BPDU 保…

导入torch时,报错 Error loading “C:\Users\Thinkpad\AppData\Roaming\Python\Python311\site-packages\torch\li

1.报错内容&#xff1a; Error loading "C:\Users\Thinkpad\AppData\Roaming\Python\Python311\site-packages\torch\lib\fbgemm.dll" or one of its dependencies. 2.报错原因&#xff1a;是因为torch和python版本不对应 3.解决方案&#xff1a; 重新安装torch&a…

vue基础语法

指令修饰符 如果想了解keycode&#xff0c;可以查看keycode对照表&#xff0c;如下图&#xff08;部分&#xff09;: 阻止冒泡事件名.stop 父div包裹子div&#xff0c;如果点击子div&#xff0c;会触发父div。 如果想只显示子div的事件&#xff0c;那么可以改子div的内容 cli…

【论文分享精炼版】 sNPU: Trusted Execution Environments on Integrated NPUs

今天在COMPASS分享了之前写的一个博客&#xff0c;做了进一步的提炼总结&#xff0c;大家可以看看原文~ 今天分享的论文《sNPU: Trusted Execution Environments on Integrated NPUs》来自2024年ISCA&#xff0c;共同一作为Erhu Feng以及Dahu Feng。并且&#xff0c; 这两位作…

Windows Home版本实现远程桌面——RDP Wrapper,及由于更新导致不可用的解决方法:以win11 22631.3593为例

一、RDP Wrapper工作机制 根据rdpwap.ini文件调用相应windows版本的termsrv.dll. 实用的命令&#xff1a; > net stat -au | findstr 3389 ; 查看端口是否启动 > net stop termservice ; 停止远程桌面 > net start termservice; > mstsc > 二、问题解决 注意查…

93. UE5 GAS RPG 应用负面效果表现

在上一篇文章里&#xff0c;我们实现了添加负面效果GE&#xff0c;并且在添加GE时&#xff0c;也会给角色应用一个负面效果标签作为标识。在这一篇里&#xff0c;我们将通过负面效果标签标识&#xff0c;应用角色身上展现对应的负面效果的表现。 我们将在这篇文章里添加一个自定…

leetcode:2710. 移除字符串中的尾随零(python3解法)

难度&#xff1a;简单 给你一个用字符串表示的正整数 num &#xff0c;请你以字符串形式返回不含尾随零的整数 num 。 示例 1&#xff1a; 输入&#xff1a;num "51230100" 输出&#xff1a;"512301" 解释&#xff1a;整数 "51230100" 有 2 个尾…

vmware 17.6 pro for personal USE初体验

新学期开学了&#xff0c;暑假期间把台式机放在办公室远程&#xff0c;无赖期间经常断电&#xff0c;把我的老台给烧坏了&#xff0c;检测了下固态硬盘和机械硬盘&#xff0c;好歹能用。但是win11的系统奔溃了。就花了半天时间重装。*v* 悲剧的是&#xff0c;一些软件环境必须…

javaWeb【day04】--(MavenSpringBootWeb入门)

01. Maven课程介绍 1.1 课程安排 学习完前端Web开发技术后&#xff0c;我们即将开始学习后端Web开发技术。做为一名Java开发工程师&#xff0c;后端Web开发技术是我们学习的重点。 1.2 初识Maven 1.2.1 什么是Maven Maven是Apache旗下的一个开源项目&#xff0c;是一款用于…

python进阶篇-day09-数据结构与算法(非线性结构与排序算法)

非线性结构(树状结构) 特点: 每个节点都可以有n个子节点(后继节点) 和 n个父节点(前驱节点) 代表: 树, 图...... 概述 属于数据结构之 非线性结构的一种, 父节点可以有多个子节点(后续节点) 特点 有且只有1个根节点 每个节点都可以有1个父节点及任意个子节点, 前提: 根节点除…

C++竞赛初阶L1-15-第六单元-多维数组(34~35课)551: T456501 计算矩阵边缘元素之和

题目内容 输入一个整数矩阵&#xff0c;计算位于矩阵边缘的元素之和。 所谓矩阵边缘的元素&#xff0c;就是第一行和最后一行的元素以及第一列和最后一列的元素。 输入格式 第 1 行包含两个整数&#xff0c;分别为行数 m 和列数 n&#xff0c;两个整数之间空格隔开。 第 2 …

文本字符分割算法尝试

一、基于opencv的分割算法 import cv2 import numpy as np from matplotlib import pyplot as pltimg cv2.imread(scratch.png, 0) # global thresholding ret1, th1 cv2.threshold(img, 127, 255, cv2.THRESH_BINARY) # Otsus thresholding th2 cv2.adaptiveThreshold(img…

Windows I/O系统

硬件存储体系 寄存器 处理器内部定义的存储体&#xff0c;它们除了存储功能&#xff0c;往往还兼有其他的能力&#xff0c;比如参与运算&#xff0c;地址解析&#xff0c;指示处理器的状态&#xff0c;等等。寄存器是由处理器内部专门的触发器电路实现的&#xff0c;处理器往…

Java代码审计篇 | ofcms系统审计思路讲解 - 篇3 | 文件上传漏洞审计

文章目录 0. 前言1. 文件上传代码审计【有1处】1.1 可疑点1【无漏洞】1.1.1 直接搜索upload关键字1.1.2 选择第一个&#xff0c;点进去分析一下1.1.3 分析this.getFile()方法1.1.4 分析new MultipartRequest(request, uploadPath)1.1.5 分析isSafeFile()方法1.1.6 分析request.…

关于支付宝小程序多规格选项的时候点击不起反应的原因分析及修改方法

解决方案&#xff1a; watch的时候&#xff0c;对于对象的赋值&#xff0c;最好用深拷贝&#xff0c;即如下图&#xff1a; watch:{ row: function (nv, ov) {var that this;that.indata.row JSON.parse(JSON.stringify(nv));//如果是对象&#xff0c;请用深入的for (va…

《OpenCV计算机视觉》—— 图像边缘检测

文章目录 一、图像边缘检测概述二、常见的图像边缘检测算法&#xff08;简单介绍&#xff09;1.sobel算子2.Scharr算子3.Laplacian算子4.Canny算子 三、代码实现 一、图像边缘检测概述 图像边缘检测是一种重要的图像处理技术&#xff0c;用于定位二维或三维图像中对象的边缘。…

一款企业网盘,支持多种文件存储方式如FTP,SFTP,MINIIO等以及跨平台管理(附源码)

前言 随着数字化转型的推进&#xff0c;企业越来越依赖于云端技术来存储、管理和共享重要的业务文件。传统的本地存储处理方案虽然可靠&#xff0c;但在灵活性、可访问性和协作方面显得力不从心。尤其在远程工作变得日益普遍的今天&#xff0c;如何高-效地管理分散团队之间的文…

Java学习Day40:大战亢金龙!(spring框架之AOP)

AOP&#xff08;面向切面变成&#xff09;&#xff1a;不改变原有代码的情况下&#xff0c;对代码进行功能添加 1.一些概念 抽取出的方法&#xff1a;通知 原始方法&#xff1a;成为连接点&#xff08;可以是程序执行中的任意位置&#xff09;&#xff0c;对应原始的一个个方…

NVDLA专题14:Runtime environment-用户模式驱动

运行时环境&#xff08;runtime environment&#xff09;包括在兼容的NVDLA硬件上运行编译神经网络的软件。 它由两部分组成: 用户模式驱动&#xff08;User Mode Driver, UMD&#xff09;: 这是应用程序的主接口&#xff0c;正如Compile library中所详述的&#xff0c;对神经…