Rating:

# Mind Palace III

**Categoria: Programação**

# Descrição:
>100% of brain CPU.

>nc 217.47.229.1 33003
![MindPalaceIII - Chall](palaceIII_chall.png)

# Solução:
Ao conectar no servidor, temos:
![MindPalaceIII - Servidor](mindpalaceIII_1.png)

É possível ver que existe dois números e operadores lógicos*¹, dando a entender que você deve resolver aquele problema:
![MindPalaceIII - ServidorResolver](mindpalaceIII_2.png)

Então, criei o seguinte script:

```
#!/usr/bin/python
#-*- coding: utf-8 -*-

import socket

def main():
HOST = '212.47.229.1'
PORT = 33003

tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
dest = (HOST, PORT)
tcp.connect(dest)

data = tcp.recv(2048)
while "FLAG" not in data:
result = 0
print(data)
valores = data.split(b"[>]")[1].split(b"\n")[0].split(b" ")
op = valores[2]

if op == b"XOR":
result = int(valores[1]) ^ int(valores[3])
elif op == b"OR":
result = int(valores[1]) | int(valores[3])
elif op == b"AND":
result = int(valores[1]) & int(valores[3])
else:
print(op)

print(result)
tcp.send(str(result) + b"\n")
data = tcp.recv(2048)
print(data)

if __name__ == "__main__":
main()
```
*² (esse script pode ser encontrado aqui nesse github)

Explicando o script:
1º - Na linhas de 7 a 12, conectamos ao servidor;

2º - Na linha 14, recebemos as mensagens do servidor;

3º - Nas linhas 18 e 19, pego os valores de, respectivamente: números a serem comparados e do operador lógico;

4º - Nas linhas de 21 a 26, verificamos qual o operador lógico e assim realizamos as definidas operações.

5º - O ```else``` servia apenas para caso algum outro operador lógico aparecesse, aí teríamos que incrementar no código, caso acontecesse, mas não aconteceu.

6º- Na linha 31, enviamos o resultado da operação para o servidor.

![MindPalaceIII - UsandoScript](mindpalaceIII_3.png)

![MindPalaceIII - Flag](mindpalaceIII_4.png)

# Flag:
```FLAG{0HH_Y0UR3_4_V3RY_5M3RT_M4TH3M4T1C}```

*¹ (https://python-reference.readthedocs.io/en/latest/docs/operators/index.html?highlight=logic#bitwise-operators)

*² (https://github.com/0x8Layer/CTF-Writeups/blob/master/SarCTF/2020/PPC/Mind%20Palace%20III/mindpalaceIII_oplogic.py)

Original writeup (https://github.com/0x8Layer/CTF-Writeups/tree/master/SarCTF/2020/PPC/Mind%20Palace%20III).