首页 > 其他分享 >xor

xor

时间:2024-11-11 22:42:19浏览次数:1  
标签:__ xor 0x4F 0x11 异或 字符串 data

题目链接:xor

下载附件后,使用 IDA 打开,并反编译,定位到 main 函数,如下。

通过查看 main 函数源码,可以发现该程序主要的操作如下。

  for ( i = 1; i < 33; ++i )
    __b[i] ^= __b[i - 1];
  if ( !strncmp(__b, global, 0x21uLL) )
    printf("Success");

即,把用户的输入进行异或操作,随后与程序中储存的一个字符串进行比对,若异或后与该字符串相同,则通过检测。

首先是提取出 global 指向的字符串的内容,如下。

即。

data = [
  0x66, 0x0A, 0x6B, 0x0C, 0x77, 0x26, 0x4F, 0x2E, 0x40, 0x11, 
  0x78, 0x0D, 0x5A, 0x3B, 0x55, 0x11, 0x70, 0x19, 0x46, 0x1F, 
  0x76, 0x22, 0x4D, 0x23, 0x44, 0x0E, 0x67, 0x06, 0x68, 0x0F, 
  0x47, 0x32, 0x4F
]

接着,直接对该字符串进行异或,即可获得程序要求用户输入的字符串(即 flag)。

data = [
  0x66, 0x0A, 0x6B, 0x0C, 0x77, 0x26, 0x4F, 0x2E, 0x40, 0x11, 
  0x78, 0x0D, 0x5A, 0x3B, 0x55, 0x11, 0x70, 0x19, 0x46, 0x1F, 
  0x76, 0x22, 0x4D, 0x23, 0x44, 0x0E, 0x67, 0x06, 0x68, 0x0F, 
  0x47, 0x32, 0x4F
]

data_reverse = "f"

for  i in range(1,len(data)):
    data_reverse += chr(data[i] ^ data[i - 1])

print(data_reverse)

标签:__,xor,0x4F,0x11,异或,字符串,data
From: https://www.cnblogs.com/imtaieee/p/18540749

相关文章

  • CF1977D XORificator
    CF1977DXORificator题意给你一个二进制(仅由\(0\)和\(1\)组成)\(n\timesm\)矩阵。你可以进行以下操作任意次:反转某一行中的所有值(即用\(1\)替换\(0\),用\(0\)替换\(1\))。矩阵中的某一列如果只包含一个\(1\),则被视为特殊列。你的任务是找出最多有多少列可以同时被特......
  • CF963-Div2-E. Xor-Grid Problem
    CF963-Div2-E.Xor-GridProblem题意给定一个\(n\timesm\)的矩阵\(a\),有两种操作:选择一行,把每个数变成所在列所有数的异或之和。选择一列,把每个数变成所在行所有数的异或之和。求进行任意次操作后整个矩阵最小的美丽值。思路第一个发现:同一数异或两次相当于没有异......
  • [ARC084F] XorShift
    模拟赛题。考虑操作的构成,先忽略\(1\)操作,只考虑任意两个数的异或,不难发现所有能构成的数即为线性基。再考虑\(1\)操作,显然可以对开始的每个数率先进行\(1\)操作再构建线性基。记\(lim=\max(\log_2a,\log_2m)\),发现所有可能有效的数都不超过\(2^{2lim}\)。再考......
  • Xor-FWT 的另一种理解方式
    Xor-FWT的另一种理解方式学习\(\text{Fennec'sAlgorithm}\)的额外收获,顺手记录一下。假设我们要求两个长度为\(n\)的数组的异或卷积,为方便起见令\(n=2^m\),也就是类似下面的形式\[C_k=\sum\limits_{i\oplusj}A_i\timesB_j\]考虑构造\(\mathbb{Z}_2^n\)中的向......
  • [GWCTF 2019]xxor
    [GWCTF2019]xxor首先可以到汇编界面从新定义(U+P)一下main函数,不然看着会有点乱分析追踪input变量可以看到每次循环是获取四字节的输入但后面对于tmp变量的赋值我就有点看不懂了,不要紧,直接动调动态调试连接linux,下断点开调我不知道为什么输入字符会直接跳出循环,所以输入......
  • [MRCTF2020]Xor
    [MRCTF2020]Xor检查无壳,32位分析打开main函数,发现不能F5反汇编如下报错,在分析401095位置处的指令出错.text:00401095callsub_401020此处是一个call指令,我们点进sub_401020函数f5反汇编成功打开然后返回到main函数按F5成功反汇编是个简单的异......
  • E.Tree Xor
    利用线段树划分区间【l,r】点击查看代码#include<bits/stdc++.h>usingnamespacestd;intl[100005],r[100005],w[100005];vector<int>a[100005],c[100005];vector<pair<int,int>>ans;voidask(intl,intr,intu,intv,intid){if(u<=l&&......
  • [CF1616H] - Keep XOR Low 的题解
    一道比较神奇的题目,状态显得比较扯淡,但是就是能过!先建立出trie树,设\(dp_u\)表示以\(u\)为根的子树内的答案。但我们发现,若\(x\)的当前位为\(1\),那么问题就没法根据他的左右子树求解了,怎么办呢。考虑一个很扯淡的状态,设\(dp_{u,v}\)表示考虑了\(u,v\)为根的子树,他......
  • B. 异或(xor)
    B.异或(xor)题意给你\(n\)个数,你可以执行若干次操作,每次选择一个区间异或上一个数,问最少操作次数使得所有数变成\(0\),输出最小的操作次数。\(n\le17,a_i\le10^8\)solution居然还有异或差分这种思想,是我孤陋寡闻了因为是区间操作,所以我们考虑在异或差分序列上操作。显......
  • 【广西省赛#7】G.Grand XOR Counting Problem Challenge
    Description给一个数组\({a_i},i=1,\cdots,n\),对\(j=0,1,\cdots,m-1\),计算其中有多少个大小为\(k\)的子序列满足其异或和为\(j\)。\(n\leq10^5\)$m\leq65536$Solution首先答案是\[[y^k]\prod_{i=1}^n(1+x^{a_i}y)\]这里对\(y\)做的是多项式乘法,对\(x\)......