首页 > 其他分享 >Merak::CTF 万物起源 赛场WP

Merak::CTF 万物起源 赛场WP

时间:2024-09-29 18:22:50浏览次数:7  
标签:解压 函数 flag CTF 数组 WP Merak main

iPlayIDA WP

首先下载附件查壳

没有壳,64位,直接上ida64打开
直奔main函数,发现里面是一个经典的输入flag判断对错的流程。然后我们分析其代码。
注意到最终判断flag是否正确的核心是v6和v7是否相等,v7已知,所以我们将主要目光投在算出v6的函数sub_13F6(s)上
该函数核心思想是将传入的flag->a1,每连续三个(0-2,3-5)合并成一个24位int,再重新分成4个6位的int,
分别作为索引(下标)于aAbcdefghijklmn数组中找到对应的值存储于v12中返回

如果觉得难以理解也可以看我自己写的简化代码如下:
知道了原理以后我们就可以反过来逆向啦,
于是乎我写了这样一个代码根据v7来逆向求解flag,此时不到11点半,开赛不到2个小时,但最终我到12点半才提交,并且上图中有这么多调试代码,这是为啥呢?因为我算出的flag没有一个是可读字符,全是乱码,我以为是自己写的代码的问题,于是一直调,最后才发现原来原文中有陷阱。
尽管aAbc数组在最初就有赋值,但除了它以外所有的变量全是局部的,要么是函数内定义的,要么是引用时传入的,唯有这个数组是全局的,那么有没有一种可能,这个数组在main函数开始前就有被修改过呢?
于是我考虑查询这个数组的其他出现位置,于是。。。

我找到了另一个包含它的函数,里面将这个数组每个数都和不同数组异或了一遍
虽然不知道这个函数啥时候运行的,运行了几遍(我是新手,不知道咋查,学长教教我),但如果它不在main前面,我就算不出一个正确的flag,于是我假定它在main前运行过1次给aAbc数组初始化。于是在自己的求解代码中将这一段代码照葫芦画瓢ctrlC+V了一遍。果真成功求解出了flag。

Pinball WP
啊啊啊啊,分不够分不够,趁着提示再做一题,刚上手游戏,打了两节历史课,但是用ce怎么都找不到数据(我是铸币,没发现这个玩意是个压缩包,上网查Unity逆向,发现人家的都是文件夹就我的是个exe才发现,明明之前扫出来了RAR的)
我们直接改后缀名为rar,然后解压,就是一个正常的Unity游戏文件夹啦
直接用ida打开exe发现找不到有用信息,了解Unity逆向后才知道原来不能这么看
根据教程,找到Pin_ball/Pinball_Data/Managed/Assembly-CSharp.dll
一般而言Unity的底层C#是在这里看的,然后使用dnSpy打开它

感觉ball和游戏关系不大,游戏胜利条件应该在Game()类里,进去找找

果然找到了pointsToWin,本来是80万多的,我这里已经修改过了,然后就是编辑,改成1,保存,打开游戏,拼命从AI手中拿1分,就得到flag啦。

iPlayCalc WP
初下载下来是一个exe,先查壳
是个upx,然后懵懂无知的我直接上upx解压,然后寄了
遇事不决上网查,得知可能是被修改过导致UPX解压不了,同时用010打开一个正常的和这个玩意(右侧正常,左侧报错),发现UPX标识被更改,我们改回去再解压。

结果是不好的,依然解压不了,没事再探,最终用OllyDbg的这个脚本给它硬解了出来

然后我直接IDA打开,找到main函数,虽然不像解压前那样混淆了,但依然意义不明
然后不会做了,没看懂文章。先跳过。。。

iPlayApple
没有苹果,只能做尝试
后缀改成.zip打开

把这些全都打开查看可疑字符串,
值得注意的有password part1和part2
以及一些flag字样

标签:解压,函数,flag,CTF,数组,WP,Merak,main
From: https://www.cnblogs.com/Woxuany1/p/18440546

相关文章

  • WPS JS宏单元格双击打勾
    一行代码,rg.Value2=就可以实现在任意单元格里输入等号后面的内容。如果想要在表格中加入限制,在规定范围内的单元格中随意输入。 rg.Column==限制了等号后面,输入的列rg.Cells!=限制单元格内容。rg.MergeCells==判断是否是合并单元格完整代码functionWorkbook_Sheet......
  • CTF攻防世界小白刷题自学笔记9
    1.disabled_button,难度:1,方向:Web题目来源:Cyberpeace-n3k0题目描述:X老师今天上课讲了前端知识,然后给了大家一个不能按的按钮,小宁惊奇地发现这个按钮按不下去,到底怎么才能按下去呢?给一下题目链接:攻防世界Web方向新手模式第10题。打开题目场景一看果然有一个不能按的按钮,如图......
  • WPF中播放音频文件
    SoundPlayer第一种方式,就是使用SoundPlayer。优点:平台自带,使用非常简单。缺点:只支持WAV音频格式,不支持MP3格式。示例代码:SoundPlayerplayer=newSoundPlayer("BLOW.WAV");player.Play();NAudio.NET平台,音频相关的开发,经常会用到NAudio这个库。优点:用起来相对也比较简......
  • WPF 基础 2D 图形学知识 判断点是否在线段上
    在知道一个使用两个点表示的线段,和另一个点,求另一个点是否在线段上本文算法属于通用的算法,可以在WPF和UWP和Xamarin等上运行,基本上所有的.NET平台都能执行如下图,如果点在线段上,那么修改线段颜色假定有线段的定义如下publicrecordLine{publicPo......
  • Wpf使用NLog将日志输出到LogViewer
    Wpf使用NLog将日志输出到LogViewer 1LogViewerLogViewer是通过UDP传输的高性能实时log查看器。具有一下特性:通过UDP读取日志通过文件导入日志导出日志到一个文件中排序、过滤(日志树,日志等级)和查找突出显示搜索文本从UPD接收日志时忽略IP地址列表多接收器支持多种......
  • 【CTF Web】Pikachu 反射型xss(get) Writeup(反射型XSS+GET请求)
    XSS(跨站脚本)概述Cross-SiteScripting简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:1.反射性XSS;2.存储型XSS;3.DOM型XSS;XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASPTOP10的排名中一直属于前三的江湖地位......
  • 【CTF Web】BUUCTF SQLi-LABS Page-1(Basic Challenges) Less-12 Writeup(SQL注入+POST
    sqli-labs1点击启动靶机。SQLi-LABSPage-1(BasicChallenges)解法随便提交一些数据。审查元素。<formaction=""name="form1"method="post"> <divstyle="margin-top:15px;height:30px;">Username:&nbsp;&nbsp;&......
  • buuctf pwn [第五空间2019 决赛]PWN51
    首先用checksec检查一下,发现是32位的,还有栈保护。然后将其放入ida32,查看main函数,幸运的发现有system。然后接下来就是理解这段反编译代码在讲什么,它的意思是它会随机生成一个4字节大小的数据,然后我们输入的passwd要与其相等。但是我们并不知道它随机生成的是什么,所以我们可以......
  • buuctf pwn jarvisoj_level01
    首先,将下载的文件用checksec检查一下然后我们将其放入ida64中,按tap键查看源码点开vuln函数,看见有read,buf,发现buf占0x80空间,而,read里面有0x200,所以会有溢出。这里显示buf的地址为0x80+8,即136。然后有发现有system函数那就简单多了,它的起始地址为0x400596接下来写代码......
  • WPF ProgressBar show value
    //xaml<Windowx:Class="WpfApp424.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mi......