首页 > 其他分享 >Moe RE - 【bugku】的解题wp

Moe RE - 【bugku】的解题wp

时间:2024-03-13 17:56:36浏览次数:18  
标签:decrypted bugku 函数 char RE flag code 12 Moe

发现好像没人写wp,虽然很简单但是写一个....


题目


 

分析

下载文件打开,习惯首先丢到Exeinfo PE里看看有没有壳

 没有壳的样子

那放心丢到IDA(64-bit)里面

 一进去就看到很有嫌疑的字符串,F5查看反汇编代码

 刚好是main函数,左边的函数列表里函数很少,而且一个一个点进去也没有东西,可以确定关键就是这个main函数

这个函数不是很复杂,简单解释一下:

首先,使用scanf函数从输入中读取一个字符串,储存在 _s 数组中

然后使用了strcpy函数将字符串“abcdefghijklmnopqrstuvwxyz”复制到 v8 数组中

就接下来循环遍历输入字符串的每个字符,将其与 v8 数组中对应位置的字符进行按位异或操作,并将结果存储回 __s 数组中

 最后,再次循环输出经过异或操作后的每个字符的ASCII码值


解题脚本

 

 1 str = [12, 13, 6, 7, 17, 0, 28, 35, 7, 90, 28, 5, 3, 9, 48, 34, 66, 4, 64, 6, 6, 69, 40, 30, 11, 21, 12, 61, 27, 84, 23, 57, 6, 6, 13, 53, 90, 8, 12, 19]
 2 s = "abcdefghijklmnopqrstuvwxyz"
 3 list = []
 4 
 5 # enumerate()函数用于同时获取元素的索引值和值本身
 6 for i, char_code in enumerate(str):
 7     decrypted_char_code = char_code ^ ord(s[i % 26])    #ord()函数用于获取字符的ASCII码值
 8     decrypted_char = chr(decrypted_char_code)   #这一行将解密后的ASCII码值转换为字符
 9     list.append(decrypted_char)
10 
11 flag = ''.join(list)
12 print("flag:", flag)

 

运行获得flag

moectf{Kn0wing_R3v3rs3_from_x0r_and_1da}

 

标签:decrypted,bugku,函数,char,RE,flag,code,12,Moe
From: https://www.cnblogs.com/demo41/p/18071206

相关文章

  • pytest-参数request的使用
    如果想把登录操作放到前置操作里,也就是用到@pytest.fixture装饰器,传参就用默认的request参数user=request.param这一步是接收传入的参数,下面演示一个参数的情况  那当request传递两个参数的时候,如果用到@pytest.fixture,里面用2个参数情况,可以把多个参数用一个字典去存储,这......
  • ReentrantLock 使用
    ReentrantLock介绍ReentrantLock是Java中的一个可重入锁,它提供了与synchronized关键字类似的功能,但相比synchronized,ReentrantLock提供了更多的灵活性和功能。定义:ReentrantLock是一个可重入且独占式的锁,它具有与使用synchronized监视器锁相同的基本行为和语义,但与......
  • A visual method to detect meat adulteration by recombinase polymerase amplifica
    创新点:基于重组酶聚合酶扩增(RPA)和侧向流试纸(LFD)的视觉方法,用于鉴定牛肉(Bostaurus)、绵羊(Ovisaries)、猪肉(Susscrofa)、鸭肉(Anasplatyrhynchos)和鸡肉(Gallusgallus)的动物来源。传统的方法需要操作员具备相当的技能、昂贵的仪器,并且无法提供快速的移动式现场检测系统来检测肉制品的......
  • R语言【paleoTS】——compareModels:比较模型适合于古生物学时间序列
    Package paleoTS version0.5.3Description获取模型拟合函数的输出,并将模型拟合信息(对数似然、AICc等)编译成一个方便的表。UsagecompareModels(...,silent=FALSE,sort=FALSE)Arguments参数【...】:任意数量的模型拟合(as.paletsfit)对象。参数【silent】......
  • Threejs实现模型对接音乐节奏
            昨天看到一个网站是2维的柱形图随着音乐节奏起伏,我突然想到二维形状可以起伏,三维应该也可以,最终原理应该都是将音乐频谱分解为数据,通过数据的切换不断地改变图形的形状来实现,因为找了分析音乐频谱的源码,解析完,再通过threejs的动画实现了3D场景下的模型随着音乐......
  • 【C++】thread 头文件无法正常使用问题
    问题当我使用MinGWGCC,在windows上编写C++程序的时候,使用thread类会无法编译,有如下错误:我使用的是c++17这个问题原因是MinGWGCC当前仍缺少标准C++11及以上版本线程类的实现。解决方案Stackoverflow上的类似问题:传送门1.下载源文件:源文件外网可能比较慢,提供C......
  • CF1810G The Maximum Prefix
    ##题意构造一个长度最多为$n$的数组$a$,其每个元素均为1或-1。生成方式如下:·选择任意整数$k\in[1,n]$作为$a$的长度。·对于$\foralli\in[1,k]$,有$p_i$的概率设$a_i=1$,有$1-p_i$的概率设$a_i=-1$。在数列被生成后,计算$s_i=a_1+a_2+a_3+...+a_i$。特别地,$......
  • AtCoder Grand Contest 022 E Median Replace
    洛谷传送门AtCoder传送门考虑对于一个确定的串怎么判断合法性。容易发现删到某个时刻若\(1\)的个数大于\(0\)的个数了,因为我们肯定不会蠢到在不是全\(1\)的时候删\(111\),所以\(c_1-c_0\)在不是全\(1\)的时候至少是不会变小的。所以我们的目标就是让\(c_1-c_0......
  • JMeter接口性能压测之阶梯加压线程组(Stepping Thread Group)
    一、前言1、阶梯式场景(负载测试):该场景主要应用在负载测试只里面,通过设定一定的并发线程数,给定加压规则,遵循“缓起步,快结束”的原则,不断地增加并发用户来找到系统的性能瓶颈,进而有针对性的进行各方面的系统优化。2、Stepping Thread Group的作用减少服务器的瞬时压力,......
  • ApeGNN: Node-Wise Adaptive Aggregation in GNNs for Recommendation论文阅读笔记
    Abstract​ 说明现有的问题:现有的gnn平等地对待用户和项目,不能区分每个节点的不同局部模式,这使得它们在推荐场景中并不理想。​ 提出本文的工作:为了解决这一挑战,我们提出了一个节点级自适应图神经网络框架ApeGNN。ApeGNN开发了一种用于信息聚合的节点级自适应融合机制,使每个节点......