1.题目给了一个py脚本,读脚本可知,用base64加密图片,传给服务器。判断和原图是否相同,长度必须相同,里面内容最多有config.diff_chars不同,hint中config.diff_chars的值为1024。接着利用tensorflow训练的一个模型来判断,图片中是何种动物,训练的模型给了一个GitHub地址。
2.判断是否输出的条件为if top_k[0] == 1:
,根据在本机训练模型试验的结果,意思是:判断是否为狗的几率最大,就输出flag。显然与题目本意不同,所以我们只需要将给我们的原图base64之后发过去就好了。
3.发包过去的时候要注意,不能一次性全部发过去,否则会出错,所以我们每次发送1024,发一个包暂停0.5秒,最后即可得到flag。(如果出错,重试几次就好)脚本如下:
from pwn import *
from time import sleep
img = open('./basque-shepherd-dog.jpg', 'rb').read()
img_base64 = base64.b64encode(img)
conn = remote('117.50.13.213', 12345)
size = 0
while size < len(img_base64):
conn.send(img_base64[size:size+1024])
size += 1024
print(size)
sleep(0.5)
conn.interactive()