前言

题目来自于看雪CTF (pediy.com)

原题下载链接:kctf2021.rar - 蓝奏云 (lanzoui.com)

关键函数

通过字符串Success!直接定位到关键函数

关键点在于第二次f_generate生成的字符串要与0x1388C77相等

f_generate生成值与传入的参数有关,相同参数返回相同结果

func.png

f_generate分成两个部分

第一部分与参数无关,通过循环加异或生成一个固定字符串0x2D02EF80

再与传入的字符串参数作用生成j,最后取~j作为返回值

func2.png

获取flag

因为最后只要将序列号和由用户名生成的随机数进行异或,得到的值再传入f_generate能生成0x13B88C77即可,所以直接获取题目中包含的用户名和序列号,得到第二次传入的值0x52A1ED5A

number.png

即需满足:0x5EE54F4C ^ serial = 0x52A1ED5A
serial = 0x5EE54F4C^0x52A1ED5A=’205824534’ (转成10进制字符串)