艰苦的爆破
运行程序说是一行行输入数据。输入错误就直接退出。程序根本看不明白,按一个个字节暴。
问题在 于这个退出怎么处理。最后用sleep但也有问题,不是总成功。在第1个成功但第2个全部不成功的情况下说明第1个错了,作个回退。
from pwn import *
#每行一个字符,成功继续,不成功报错退出
context.log_level = 'critical' #'debug' #
ans = []
while True:
print(ans)
for i in range(256):
p = process('./ey_or')
#p.settimeout( 0.2 )
p.recv()
for j in ans:
p.sendline(str(j).encode())
p.sendline(str(i).encode())
sleep(0.2)
ret = p.poll()
if ret != None:
print('.', end ='')
p.close()
else:
if i == 0:
print(p.recv())
pause()
ans.append(i)
print('Ok', i, ans)
p.close()
break
else:
ans = ans[:-1]
#pause()
print(ans)
#[36, 30, 156, 30, 43, 6, 116, 22, 211, 66, 151, 89, 36, 82, 254, 81, 182, 134, 24, 90, 119, 6, 88, 137, 64, 197, 251, 15, 116, 220, 161, 94, 154, 252, 139, 11, 41, 215, 27, 158, 143, 140, 54, 189, 146, 48, 167, 56, 84, 226, 15, 188, 126, 24]
#You got the Flag: 32C3_wE_kNoW_EvErYbOdY_LiKeS_eLyMaS
#32C3_wE_kNoW_EvErYbOdY_LiKeS_eLyMaS