游戏安全实U8国际 U8国际官方网站 体育APP下载验室
栏目:U8体育 发布时间:2025-10-01
  u8,u8国际,u8国际官方网站,u8国际网站,u8国际网址,u8国际链接,u8体育,u8体育官网,u8体育网址,u8注册,u8体育网址,u8官方网站,u8体育APP,u8体育登录,u8体育入口   从第一题题目来看,感觉这次的题目都出得很灵活,主要考的是密码学这一块的东西。这道题目也不例外,由于不是科班出身,根本没有接触过密码学,

  u8,u8国际,u8国际官方网站,u8国际网站,u8国际网址,u8国际链接,u8体育,u8体育官网,u8体育网址,u8注册,u8体育网址,u8官方网站,u8体育APP,u8体育登录,u8体育入口

游戏安全实U8国际 U8国际官方网站 U8体育APP下载验室

  从第一题题目来看,感觉这次的题目都出得很灵活,主要考的是密码学这一块的东西。这道题目也不例外,由于不是科班出身,根本没有接触过密码学,那只能现学现卖,其中踩了不少坑,但是不要怕,我们可以慢慢爬出来再继续踩。初一看这道题后面的“双重保镖”很是霸气,很容易被吓跑,但是仔细认真做了之后会发现,Oh,hash碰撞也不是那么难的。好了,废话扯多了估计要被拉黑,我选择的依旧是安卓的题目,下面进入正题,我将此题分成两大部分,主要阐述这

  3.有了的话,把该函数初始化的指针带进到图中的sub_F90函数,然后开始计算。

  4.小插曲,这里说一下这个题目第一次发的有一个bug,解密后的代码与固定两个字符串的指针进行了比较,

  导致每次对比的值是变的,我做到这里的时候怀疑了一下人生。what?比较的值还是变的?还不能改程序内存?在心中无限崩溃循环中还好官网出来及时修补了bug。

  程序将输入的16bytes(也就是128bit),记为input,buffer的大小是2048bytes,分成了128个128bit,记为x[0]到x[127],根据之前的运算,input将和x数组进行128次运算,每一次运算生成1bit,一共分成128个bit,即16字节,这16字节就是最后算出来的结果,也是需要比较的结果。

  其实是一个128元1次的异或方程组,采用高数中的高斯消元法来求解,这个我没学过密码学也会,因为这就是高数中的内容啊,熟悉吗?矩阵化简,想起来了吗?对于高数课逃课的同学,关于高斯消元法,给个链接:

  然后根据本题目的特征google一下就能搜到不少解该类方程组的模板,选取一个,代码如下:

  再根据IDA中看到的信息,确认正确答案的前面7字节是GSLab17,最后四字节是pid,编写代码如下:

  之所以说它是孪生兄弟,是因为它对程序进入了hash值的校验,并且是两种校验,两个校验值都必须值为0x614C5347,就是“GSLa”。

  Hash函数,哈希函数,散列函数,杂凑函数它们说的都是同一个含义,后续我们都称之为Hash函数。

  Hash函数,哈希函数,散列函数,杂凑函数它们说的都是同一个含义,后续我们都称之为Hash函数。

  给定输入M,通过函数H可以很容易计算出输出h;但如果给定h,则找到M在计算上不可行。

  在Hash函数中,M称之为h原像,,因为H函数是一个多对一的映射,,对于任意给定的Hash数

  值h,,可能会有多个原像,,如果满足如下条件,则称之为发生了哈希碰撞,也就是哈希冲突。

  介绍完基本概念,回归正传,本题目的两个校验是crc32校验和fnvhash函数校验,这里再给两个链接:

  所以思路就变成了暴力碰撞fnvhash的值即可。分析完了,写代码进行碰撞,关键代码:

  优化后的crc32和fnvhash函数的计算,代码对比如下,这里的值只针对我自己的so进行的优化:

  (被卡了一波,标记,其实也不是没做出来的主要原因,自己挖了个坑,一直在挂机,没注意到错误,以为hash碰撞很难,但是过了很久没跑出结果我就跟了一下,解决掉坑,到达胜利光明顶),优化算法后效率提升了大概2100倍,大概1秒钟碰撞1E次,瞬间得出解。跑了大概半分钟,得出4个解(感觉一天给1-2W个解也是没有压力的),如下: