发现好像没人写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}

Moe RE - 【bugku】的更多相关文章

  1. 【bugku】【RE】file WriteUp

    FILE 查壳后显示无壳,拖进IDA: 运行程序时传递的第一个参数为一个文件名,并打开该文件.下面点进去encode函数分析一下: for循环中每三个为一组,进行Base64的操作,接下来两个if分别 ...

  2. 【bugku】【ZSCTF】【迷宫RE】Take The Maze WriteUp

    Take The Maze 首先拿进PEID里查一下有没有壳: 无壳,果断拖进IDA.可是Graph View中找不到主程序的位置,在函数表里寻找主函数: 函数太多阻扰了我们找到主程序,运行一下程序找 ...

  3. 【伪随机数】【搜索】【RE】【bugku】mountainclimbing WriteUp

    Mountain Climbing WP 拿到题首先熟练地查个壳再用各种脱壳工具脱个壳. 脱壳之后熟练地双击感受一下出题者的恶意: 根据字面意思得知,是要根据一系列的操作来得到收益最大值,于是用ida ...

  4. 【Data URL】【RE】【bugku】逆向入门writeup

    在写wp之前先来了解一下Data URL是什么 Data URL 在浏览器向服务端发送请求来引用资源时,一般浏览器都有同一时间并发请求数不超过4个的限制.所以如果一个网页需要引用大量的服务端资源,就会 ...

  5. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  6. 【原】谈谈对Objective-C中代理模式的误解

    [原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...

  7. 【原】FMDB源码阅读(三)

    [原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...

  8. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  9. 【调侃】IOC前世今生

    前些天,参与了公司内部小组的一次技术交流,主要是针对<IOC与AOP>,本着学而时习之的态度及积极分享的精神,我就结合一个小故事来初浅地剖析一下我眼中的“IOC前世今生”,以方便初学者能更 ...

  10. Python高手之路【三】python基础之函数

    基本数据类型补充: set 是一个无序且不重复的元素集合 class set(object): """ set() -> new empty set object ...

随机推荐

  1. Python之读取Excel

    介绍 现在交给你一份2010年美国各州县人口普查表:censuspopdata.xlsx.共72864条记录. 每一行代表一个县某统计区的人口数. 需要你统计出:各县统计区数量和人口数. 表格内容长这 ...

  2. 多线程系列(七) -ThreadLocal 用法及内存泄露分析

    一.简介 在 Java web 项目中,想必很多的同学对ThreadLocal这个类并不陌生,它最常用的应用场景就是用来做对象的跨层传递,避免多次传递,打破层次之间的约束. 比如下面这个HttpSer ...

  3. 【Android 逆向】【攻防世界】Ph0en1x-100

    1. apk 安装到手机,老套路需要输入flag 2. jadx 打开apk,没有加壳 ...... public void onGoClick(View v) { String sInput = t ...

  4. 【Azure 应用服务】使用Python Azure SDK 来获取 App Service的访问限制信息(Access Restrictions)

    问题描述 为Azure App Service添加访问限制,需要Python Azure SDK来实现的示例代码. 问题解答 查阅Azure App Service的官方资料,使用Python SDK ...

  5. 【Azure 应用服务】VS2019发布应用到正在运行的App Service时失败问题的解决

    问题描述 在VS 2019中配置号App Service的Publish Profile后,发布应用出现错误.根据VS 2019中的输出消息可知有文件正在运行中,无法被替换,所以发布失败. 问题解决 ...

  6. Docker的使用记录

    开始 这是第一个尝试在Leanote上面编写文章,我觉得最重要的事情就是能够保证md文件是能够移植的,否则如果这个软件不靠谱的话,我还能把文章移动到别的地方去.所以先写一篇文章看看效果如何,方便不方便 ...

  7. CDC作业历史记录无法删除问题

    背景 数据库开启CDC功能后,每天会生成大量的历史记录,即使达到参数"每个作业的最大历史记录"的阈值后也不会被删除,导致其它作业的历史记录被删除,无法查看以前的执行情况,非常不方便 ...

  8. Beckhoff 倍福 漏洞-整理(持续更新)

    工控漏洞整理网站 http://ivd.winicssec.com/index.php/Home/Search/search.html?keyword=Beckhoff

  9. 【拉格朗日优化dp】P4365 [九省联考 2018] 秘密袭击 coat

    [拉格朗日优化dp]P4365 [九省联考 2018] 秘密袭击 coat 题目简述 求树上所有连通块第 \(k\) 大点权(不足 \(k\) 点记为 \(0\))的和. \(1\leq k\leq ...

  10. Git常见的面试题

    在软件开发领域,Git是一个极为重要的版本控制系统,几乎每个开发者都需要掌握它.因此,在面试过程中,Git常常成为了面试官们用来考察候选人技能和经验的重要工具之一.以下是一些常见的Git面试题,希望它 ...