Rubik.zip

ida分析。静态只能分析大概思路就是,要求对 魔方进行一个还原

魔方还原步骤,只需要,将第一次转动的步骤 方向 每个步骤*3 就能得到,

但是步骤利用的是一个 随机数

随机数的种子通过 调试猜测 可能 是时间

所以可以直接些 exp 完成远程服务 从而 得到flag。

from pwn import *
from ctypes import *

libc  = cdll.LoadLibrary('/lib/x86_64-linux-gnu/libc.so.6')
print(libc.time(0))
libc.srand(libc.time(0))
v5 = libc.rand()
num = ((((v5 >> 56)+ v5) - ((v5 >> 31) >> 24)) % 0x100) + 0x10
steps_buf = ['F','R','U']

re_step = ""
print hex(num)

for i in range(num):
	re_step = steps_buf[libc.rand()%3] * 3 + re_step

# p = process('./Rubic')
p = remote("ip", pro)
p.sendline(re_step)

p.interactive()