ai-nimals

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。(如果出错,重试几次就好)脚本如下:

  1. from pwn import *
  2. from time import sleep
  3. img = open('./basque-shepherd-dog.jpg', 'rb').read()
  4. img_base64 = base64.b64encode(img)
  5. conn = remote('117.50.13.213', 12345)
  6. size = 0
  7. while size < len(img_base64):
  8. conn.send(img_base64[size:size+1024])
  9. size += 1024
  10. print(size)
  11. sleep(0.5)
  12. conn.interactive()

图片标题