首页 > 其他分享 >【0xGame 2023】题解week1

【0xGame 2023】题解week1

时间:2023-10-20 18:24:10浏览次数:61  
标签:0xGame 题解 v10 v11 v8 v7 week1 v9

前段时间在忙各种事情,这两天有学弟学妹要入re,想带着他们打个新生赛,我就打算把这个比赛week1的题先出一遍,后面的之后再说。

这次0xGame的re题目名称都很有意思,开始做吧。

数字筑基

解法


直接搜索字符串

代码金丹

解法


就比第一题多个判断过程,不过flag仍然明文

网络元婴

解法


进去后明文,只不过分开了
为了方便就用x64dbg进去之后,在赋值结束后下断

然后进入内存地址

复制下来即可

虚拟化身

解法1

我特意把hint也截下来了,这也是信息之一,告诉我们重启之后验证。
所以我们这题的思路由逆向算法转为爆破程序。

可以看到这题相对于前面几题复杂了不少
不过不重要,我们现在的思路是爆破,直接找到判断的地方

地址151D,看看汇编

应该是删除了符号表了,没啥信息,没关系,看看字符串

也没有,应该是动态生成的,直接上X64dbg

跑出来了,点进去

根据字符串的信息很明显,第一个跳不能让他成功,成功的话就输出错误字符串,第二个让他成功,直接让他挂起
我们直接nop第一个跳

可以看到我们随便输入的东西导致即将导致第一个跳转,我们nop



爆破成了

再次打开,就出现了flag

解法2

应该更加接近正确的做法把

strcmp的两个参数v15和v10,v15没有什么信息,v10有

两个word点进去

小端序存储的

a = bytes.fromhex('0000000000004B1B7E070E01084B234C085707196A55585309557F030C541D4E')
a += p32(0x50585475) + p32(0x2234E52) + p32(0x553045B)
key = b'0xGame'
xor(a,key)
#0xGame{c9fcd83d-e27a-4569-8ba1-62555b6dc6ac}

赛博天尊

解法

这题目我还是用心看了一下
已查无壳64位,扔进ida

长得还行(因为关键函数我重命名过,题目自带符号表被删了)
最主要的就是中间if的一大坨,根据这一大坨可以直接看出需要z3解,但我们还是进入程序的内部结构看看。

搜索字符串,只发现一个自带的0xGame的一个待格式化的一个字符串,所以关键信息仍然是动态生成的,我们x64dbg

找到了,点进去

这是我们要执行的代码

并且这个跳转不能成功,这样字符串就会被覆盖掉
同时这个
也不能跳成功,看一下有几个要这么跳


这些都是

在上面下断,然后一个个调ZF位

就可以爆破这个程序,但是这题不想上题,爆了也没用。
好好看一下,是什么决定这些跳转执不执行的

第一个,应该是不断读我们的字符串,然后比较我们输入的和0,然后根据未读到0的位置,不断自增rax,然后rax和2C比较。

第二个检查是否为}

后面的一坨lea,xx*4啥的就是刚刚ida里面看到的表达式了,有点恶心。
到这边知道看程序内部没啥用了
还是z3吧

from z3 import *
 
v7,v8,v9,v10,v11 = Ints('v7 v8 v9 v10 v11')
 
s = Solver()
s.add(7 * v9 + 5 * (v8 + v11) + 2 * (v10 + 4 * v7) == 0x12021DE669FC2)
v4 = v9 + v10 + 2 * v10 + 2 * (v11 + v7)
s.add(v8 + 3*v4 == 0x159BFFC17D045)
s.add(v10 + v9 + v11 + 2 * v9 + 2 * (v9 + v11 + 2 * v9) + 2 * (v8 + 4 * v7) == 0xACE320D12501)
s.add(v8 + 2 * (v7 + v11 + v9 + 2 * v10) == 0x733FFEB3A4FA)
s.add(v8 + 7 * v11 + 8 * (v9 + v10) + 5 * v7 == 0x1935EBA54EB28)
s.check()
 
d = s.model()
print(d)
v11 = 63356652901730
v9 = 16488
v7 = 2693650760
v8 = 14810
v10 = 41791
 
a='-'.join([hex(i)[2:] for i in [v7,v8,v9,v10,v11]])
print(a)

出了

关于z3的研究我这两天会出一篇flag

标签:0xGame,题解,v10,v11,v8,v7,week1,v9
From: https://www.cnblogs.com/Corax0o0/p/17777740.html

相关文章

  • ABC209E Shiritori 题解
    ABC209EShiritori题解原题:洛谷AT_abc209_e分析博弈,可重复选,一眼图论,将每个单词的前三个字符向后三个字符连边,并用后三个字符代表这个单词。看一下样例。5eaaaabaa12eaaaacaa13daaaaaaa45eaaaadaa14daaaafaa46我们得到的有向图:当一方说完......
  • Game Bundles 题解
    题目链接GameBundles分析很神奇的一道题目先想想如何计算一个集合和为60的子集个数可以想到通过\(DP\)求解:记\(f[i][j]\)为前\(i\)个数字,和为\(j\)的子集个数则\(f[i][j]+=f[i-1][j-a[i]]\)\(f[i][a[i]]++\)可以倒叙枚举\(j\)滚掉\(i\)这一维代码如下voi......
  • P9745 「KDOI-06-S」树上异或 题解
    原题挺好的树形dp,正好dp不太熟练,练习一下赛时只想到了暴力和\(X\leq7\)的链的部分分,过于naive不说了先考虑链的情况,既然是二进制考虑按位拆分。设\(g_{i,j,0/1}\)表示以\(i\)为根,从\(i\)点连通块的疑惑和第\(j\)位为\(0/1\),除去连通块部分的积的和。然后设......
  • P3119 [USACO15JAN] Grass Cownoisseur G 题解
    分析大概是强连通分量里面最水的一道紫题,不过细节挺多的,做题的时候给蒟蒻震惊到了。题目要求是从\(1\)走到某个点,然后再走回\(1\)号点,中途可逆行一次,问最多能经过几个点。有一个明显的思路是存两个图,一个正图一个反图,正图是为了求\(1\)到各个点的距离,反图是为了求各个点......
  • LuoguCF362B Petya and Staircases 题解
    分析简单排序题。首先Petya可以通过跨过一个台阶和两个台阶保证不经过脏台阶,但是不可以通过跨过三个台阶来保证不经过脏台阶,所以只要看有没有连续的三个脏台阶即可。同时,如果第一个台阶和最后一个台阶至少一个是脏台阶那么就不可以达成。AcceptedCode/*CodeByManipula*/......
  • CF424C的题解
    简单题。CF评分才*1600。可以直接先把\(Q\)拆成两部分。\[\begin{aligned}\largea&=\oplus^n_{i=1}p_i\\\largeb&=\oplus^n_{i=1}\oplus^n_{j=1}\\\(i\bmodj)\\\largeQ&=a\oplusb\end{aligned}\]\(a\)很好算,我们看一下\(b\)具体要怎么算。把\(b\)......
  • CF580B的题解
    见到有单调性、有限制的区间问题,很自然地就会想到用尺取去做。先按工资升序排序,然后套上尺取就行了。不会尺取的可以根据这道题去学。时间复杂度\(O(n\logn)\)。#include<cstdio>#include<algorithm>#definelllonglongusingnamespacestd;constintN=1e5+10;intn......
  • ARC166B题解
    发现还没有和我一样的做法。觉得B比A好想的多。令\(A_i\)为\(a_i\)变成\(A\)的倍数最少次数,\(B_i,C_i,AB_i,AC_i,BC_i,ABC_i\)同理。那么我们就有\(A_i=(A-A\bmod{a_i})\bmodA\),其他同理。这一大坨东西显然都能在\(O(n)\)的时间复杂度内算出来。剩下的就很好......
  • [题解]CF1881G Anya and the Mysterious String
    思路发现如果一个字符串中有长度大于等于\(2\)回文子串,必定有长度为\(2\)的回文子串或长度为\(3\)的回文子串,并且形如:aa和aba。所以考虑用线段树这两种情况。维护一段区间的最左、次左、最右、次右的元素,同时用两个标记变量\(f_1,f_2\)分别表示这个区间中是否出现形如......
  • [AGC020F] Arcs on a Circle 题解
    ArcsonaCircle首先,一个非常自然的想法是尝试断环成链。怎么断呢?我们发现,选择最长线段的起点处截断是个非常好的选择,因为不可能有一个线段完全覆盖它。这之后,一个紧接着的想法就是DP。假如把描述中的全部“实点”改成“整点”的话,那么这题是比较trivial的,可以通过随便状压......