write-up: IoT/Lets_All_Love_UART/README.md
This commit is contained in:
parent
95c0b63bfb
commit
239f8af9a8
@ -1,17 +1,46 @@
|
|||||||
# Let's All Love UART — Solution
|
# Let's All Love UART
|
||||||
|
|
||||||
**Difficulty:** Easy | **Category:** IoT | **Flag:** `ESPILON{LAIN_TrUsT_U4RT}`
|
| Field | Value |
|
||||||
|
|-------|-------|
|
||||||
|
| Category | IoT |
|
||||||
|
| Difficulty | Easy |
|
||||||
|
| Points | 500 |
|
||||||
|
| Author | Eun0us |
|
||||||
|
| CTF | Espilon 2026 |
|
||||||
|
|
||||||
## Overview
|
---
|
||||||
|
|
||||||
The challenge emulates a split UART interface on a Lain router:
|
## Description
|
||||||
|
|
||||||
- **TX (port 1111)**: Read only — device output
|
This challenge emulates a UART interface on a Lain router.
|
||||||
- **RX (port 2222)**: Write only — send commands
|
Open both connections, interact as if it was real hardware.
|
||||||
|
|
||||||
## Steps
|
- **TX**: Read only
|
||||||
|
- **RX**: Write only
|
||||||
|
|
||||||
1. Open two terminals:
|
**Let's All Love Lain!**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## TL;DR
|
||||||
|
|
||||||
|
Open the TX and RX ports simultaneously. Send `flag` on the RX (write) port.
|
||||||
|
The flag is immediately printed on the TX (read) port.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Tools
|
||||||
|
|
||||||
|
| Tool | Purpose |
|
||||||
|
|------|---------|
|
||||||
|
| `nc` | Split UART connection |
|
||||||
|
| Python 3 | Automated solver script |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
|
||||||
|
### Step 1 — Open both channels
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Terminal 1 — read device output
|
# Terminal 1 — read device output
|
||||||
@ -21,19 +50,27 @@ nc <host> 1111
|
|||||||
nc <host> 2222
|
nc <host> 2222
|
||||||
```
|
```
|
||||||
|
|
||||||
1. On the RX terminal, send the `flag` command:
|
> 📸 `[screenshot: two terminal windows open, TX showing the device banner]`
|
||||||
|
|
||||||
|
### Step 2 — Request the flag
|
||||||
|
|
||||||
|
In Terminal 2 (RX):
|
||||||
|
|
||||||
```text
|
```text
|
||||||
flag
|
flag
|
||||||
```
|
```
|
||||||
|
|
||||||
1. The flag prints on the TX terminal:
|
### Step 3 — Read the flag
|
||||||
|
|
||||||
```text
|
In Terminal 1 (TX):
|
||||||
|
|
||||||
|
```
|
||||||
ESPILON{LAIN_TrUsT_U4RT}
|
ESPILON{LAIN_TrUsT_U4RT}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Solver Script
|
> 📸 `[screenshot: TX terminal printing the flag immediately after the flag command is sent]`
|
||||||
|
|
||||||
|
### Automated solver
|
||||||
|
|
||||||
```python
|
```python
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
@ -64,10 +101,8 @@ with socket.create_connection((HOST, RX_PORT)) as s:
|
|||||||
tx_thread.join()
|
tx_thread.join()
|
||||||
```
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Flag
|
## Flag
|
||||||
|
|
||||||
`ESPILON{LAIN_TrUsT_U4RT}`
|
`ESPILON{LAIN_TrUsT_U4RT}`
|
||||||
|
|
||||||
## Author
|
|
||||||
|
|
||||||
Eun0us
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user