Tags: scripting 

Rating:

# Hashbrown Caserole

Author: [roerohan](https://github.com/roerohan)

# Requirements

- Python

# Source

```
Hashbrowns

Connect here:
nc jh2i.com 50005
```

# Exploitation

```python
import hashlib
from pwn import remote

r = remote('jh2i.com', 50005)

def match_sha1(n):
for i in range(0, 10**8):
if i%1000000 == 0: print(i)
if(hashlib.sha1(str(i).encode()).hexdigest()[:len(n)] == n):
return i

def match_md5(n):
for i in range(0, 10**8):
if i%1000000 == 0: print(i)
if(hashlib.md5(str(i).encode()).hexdigest()[:len(n)] == n):
return i

while True:
t = 'md5'
x = r.recv(1024).decode().strip()
print(x)

if 'sha1' in x:
t = 'sha1'

if ('flag' in x): break

x = x.split(': ')[1]

res = 0
if t == 'md5':
res = match_md5(x)
else:
res = match_sha1(x)

r.sendline(str(res))
print('Sending: ' + str(res))
print(r.recvline().decode())
```

This is probably not the most efficient script, you could create a reverse dictionary and map it directly, but this works too. The script runs for several minutes and gives you the flag.

```bash
$ python script.py
...
...
That casserole was DELICIOUS!!!! Here's your flag: flag{warm_casseroles_for_breakfast!!!}
```

The flag is:

```
flag{warm_casseroles_for_breakfast!!!}
```

Original writeup (https://github.com/csivitu/CTF-Write-ups/tree/master/HacktivityCon%20CTF/Scripting/Hashbrown%20Caserole).