考点为去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
双击核心函数,但是无法反编译:
简单的双跳转花指令,按照下面修改即可: