题目信息

考点为去ret花指令,然后正常逆向,先获得seed,然后就是一个简单的异或了,

由于插入了内联汇编,编译的时候要指定

gcc test.c -o flower -masm=intel -no-pie -m64
strip flower

flag:

HXCTF{f1ow4r_1s_5o_b4@utifu1_@nd_4z_right?}

着重点

windows下的rand函数,在生成随机数所选用的参数和linux是不一样的,虽然都是线性同余生成器,但是参数有不同。

由于不开源,并不知道参数究竟是多少,但是linux其实是知道的,所以采取在linux下模拟随机数的生成

linux下的源码:https://github.com/lattera/glibc/blob/master/stdlib/random_r.c

EXP

静态分析然后去花(常规

image.png

第一个

双击核心函数,但是无法反编译:

image.png

简单的双跳转花指令,按照下面修改即可: