solution.py 760 B

12345678910111213141516171819202122232425262728293031323334353637
  1. from base64 import b64decode
  2. import socket
  3. from Crypto.Cipher import AES
  4. server = '127.0.0.1'
  5. port = 8000
  6. chars = 'abcdefghijklmnopqrstuvwxyz01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ{}_'
  7. flag_blocks = 2
  8. block_size = 16
  9. index = {}
  10. flag = ''
  11. for i in range(block_size-1, 1, -1):
  12. for j in chars:
  13. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  14. s.connect((server, port))
  15. data = s.recv(4096)
  16. s.send(('a'*i).encode('ascii'))
  17. value = b64decode(s.recv(4096)).hex()[0:32]
  18. s.close()
  19. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  20. s.connect((server, port))
  21. data = s.recv(4096)
  22. s.send(('a'*i+flag+j).encode('ascii'))
  23. test = b64decode(s.recv(4096)).hex()[0:32]
  24. s.close()
  25. if value == test:
  26. flag += j
  27. break
  28. print(flag)