可以看到用gets让用户输入v1,还比较了v2的值,但此之前已经设置了v2的值为0.0
法一
可以用传统的方法栈溢出,覆盖返回地址为system的地址
法二
v2也存在栈上,也可以通过gets栈溢出修改v2原本的数据
movss xmm0, [rbp+var_4] #将v2的值放到xmm0里面
ucomiss xmm0, cs:dword_4007F4 #比较xmm0和11.28125
我们点进去dword_4007F4,是可以看到11.28125的十六进制的
然后v1和v2相差0x30-0x4的距离,用gets输入
点击查看代码
v1 #rbp-30
v2 #rbp-4
rbp
ret