> For the complete documentation index, see [llms.txt](https://beafn28.gitbook.io/beafn28/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://beafn28.gitbook.io/beafn28/writeups/overthewire/bandit/nivel-11-20.md).

# Nivel 11-20

### NIVEL 11

Ingresamos las credenciales para el nivel 11.

* **Usuario:** `bandit11`
* **Contraseña:** `dtR173fZKb0RRsDFSGsg2RWnpNVj3qRr`

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FNndNtSVfMWrExkwbZMxm%2Fimage.png?alt=media&amp;token=3762b4fa-f269-411b-b069-4eff6c38063d" alt=""><figcaption></figcaption></figure>

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FtWQ38hUrRzsCOoWU1dyK%2Fimage.png?alt=media&amp;token=0cc16f9b-c552-4482-9f4b-e9d1a893f851" alt=""><figcaption></figcaption></figure>

La contraseña para el siguiente nivel está almacenada en el archivo `data.txt`, donde todas las letras minúsculas (a-z) y mayúsculas (A-Z) han sido rotadas 13 posiciones.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2F5nc9FV2r1SrhrEh6LNNu%2Fimage.png?alt=media&amp;token=08c5ee37-3119-44cb-8f2b-fba4cb8689e6" alt=""><figcaption></figcaption></figure>

### NIVEL 12

Ingresamos las credenciales para el nivel 12.

* **Usuario:** `bandit12`
* **Contraseña:** `7x16WNeHIi5YkIhWsfFIqoognUTyj9Q4`

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FcsxMnhgN0Wnt1OFZVc0b%2Fimage.png?alt=media&amp;token=3b42afcb-8174-4925-8fe6-5c6a5b98ee64" alt=""><figcaption></figcaption></figure>

La contraseña para el siguiente nivel está almacenada en el archivo `data.txt`, que es un volcado hexadecimal de un archivo que ha sido comprimido repetidamente. Para este nivel, puede ser útil crear un directorio bajo `/tmp` en el que puedas trabajar. Usa `mkdir` con un nombre de directorio difícil de adivinar. O mejor aún, usa el comando `mktemp -d`. Luego copia el archivo de datos utilizando `cp` y renómbralo utilizando `mv` (¡lee las páginas del manual!).

```markdown
bandit12@bandit:~$ ls
```

**Resultado:**

```kotlin
data.txt
```

#### 2. Crear un directorio temporal y copiar el archivo

```bash
bandit12@bandit:~$ mkdir /tmp/bea
bandit12@bandit:~$ cp data.txt /tmp/bea
bandit12@bandit:~$ cd /tmp/bea
bandit12@bandit:/tmp/bea$ ls
```

**Resultado:**

```kotlin
data.txt
```

#### 3. Decodificar el archivo hexadecimal

```bash
bandit12@bandit:/tmp/bea$ xxd -r data.txt > bea
bandit12@bandit:/tmp/bea$ ls
```

**Resultado:**

```kotlin
bea  data.txt
```

#### 4. Verificar el tipo de archivo

```bash
bandit12@bandit:/tmp/bea$ file bea
```

**Resultado:**

```arduino
bea: gzip compressed data, was "data2.bin", last modified: Wed Jul 17 15:57:06 2024, max compression, from Unix, original size modulo 2^32 577
```

#### 5. Renombrar y descomprimir el archivo

```bash
bandit12@bandit:/tmp/bea$ mv bea bea.gz
bandit12@bandit:/tmp/bea$ gzip -d bea.gz
bandit12@bandit:/tmp/bea$ ls
```

**Resultado:**

```kotlin
bea  data.txt
```

#### 6. Verificar nuevamente el tipo de archivo

```bash
bandit12@bandit:/tmp/bea$ file bea
```

**Resultado:**

```wasm
bea: bzip2 compressed data, block size = 900k
```

#### 7. Renombrar y descomprimir el archivo Bzip2

```bash
bandit12@bandit:/tmp/bea$ mv bea bea.bz2
bandit12@bandit:/tmp/bea$ bzip2 -d bea.bz2
bandit12@bandit:/tmp/bea$ ls
```

**Resultado:**

```kotlin
bea  data.txt
```

#### 8. Verificar nuevamente el tipo de archivo

```bash
bandit12@bandit:/tmp/bea$ file bea
```

**Resultado:**

```arduino
bea: gzip compressed data, was "data4.bin", last modified: Wed Jul 17 15:57:06 2024, max compression, from Unix, original size modulo 2^32 20480
```

#### 9. Repetir los pasos de renombrar y descomprimir

```bash
bandit12@bandit:/tmp/bea$ mv bea bea.gz
bandit12@bandit:/tmp/bea$ gzip -d bea.gz
bandit12@bandit:/tmp/bea$ ls
```

**Resultado:**

```kotlin
bea  data.txt
```

#### 10. Verificar nuevamente el tipo de archivo

```bash
bandit12@bandit:/tmp/bea$ file bea
```

**Resultado:**

```java
bea: POSIX tar archive (GNU)
```

#### 11. Extraer el archivo TAR

```bash
bandit12@bandit:/tmp/bea$ mv bea bea.tar
bandit12@bandit:/tmp/bea$ tar xf bea.tar
bandit12@bandit:/tmp/bea$ ls
```

**Resultado:**

```kotlin
bea.tar  data5.bin  data.txt
```

#### 12. Continuar descomprimiendo hasta encontrar un archivo ASCII

```bash
bandit12@bandit:/tmp/bea$ file data5.bin
```

**Resultado:**

```java
data5.bin: POSIX tar archive (GNU)
```

Repite los pasos de descompresión y extracción según el tipo de archivo detectado. En este caso:

```bash
bandit12@bandit:/tmp/bea$ mv data5.bin bea.tar
bandit12@bandit:/tmp/bea$ tar xf bea.tar
bandit12@bandit:/tmp/bea$ ls
bandit12@bandit:/tmp/bea$ file data6.bin
```

**Resultado:**

```wasm
data6.bin: bzip2 compressed data, block size = 900k
```

Descomprime y repite hasta obtener:

```bash
bandit12@bandit:/tmp/bea$ file bea
```

**Resultado:**

```vbnet
bea: ASCII text
```

#### 13. Leer el archivo final para obtener la contraseña

```bash
bandit12@bandit:/tmp/bea$ cat bea
```

**Resultado:**

```csharp
The password is FO5dwFsc0cbaIiH0h8J2eUks2vdTDwAn
```

### NIVEL 13

Ingresamos las credenciales para el nivel 13.

* **Usuario:** `bandit13`
* **Contraseña:** `FO5dwFsc0cbaIiH0h8J2eUks2vdTDwAn`

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2F5ZLtgnGjFpbOYcQrWVTP%2Fimage.png?alt=media&amp;token=f7c56907-3332-4301-9995-e78ebd43eeda" alt=""><figcaption></figcaption></figure>

La contraseña para el siguiente nivel está almacenada en `/etc/bandit_pass/bandit14` y solo puede ser leída por el usuario `bandit14`. En este nivel, no obtienes la contraseña directamente, pero recibes una clave SSH privada que puede ser utilizada para iniciar sesión en el siguiente nivel. Nota: `localhost` es un nombre de host que se refiere a la máquina en la que estás trabajando.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2F9o9apOHetNKgYJv0e4WM%2Fimage.png?alt=media&amp;token=47e28d8b-7751-49fa-8433-b93dc7410306" alt=""><figcaption></figcaption></figure>

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FxPmdpiglFJVa3tH6COIt%2Fimage.png?alt=media&amp;token=46a2cab4-c62e-4ae8-8be4-0e9960276579" alt=""><figcaption></figcaption></figure>

La contraseña es `MU4VWeTyJk8ROof1qqmcBPaLh7lDCPvS`

### NIVEL 14

Ingresamos las credenciales para el nivel 14.

* **Usuario:** `bandit14`
* **Contraseña:** `MU4VWeTyJk8ROof1qqmcBPaLh7lDCPvS`

Para resolver este nivel, debes enviar la contraseña del nivel actual (la que ya has obtenido) al puerto 30000 en `localhost` y recibir la respuesta que será la contraseña para el siguiente nivel.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FOyOPDyMrlDBN2a6WAD0I%2Fimage.png?alt=media&amp;token=e3923462-8eb0-4341-9539-19bc6b492b86" alt=""><figcaption></figcaption></figure>

La contraseña es `8xCjnmgoKbGLhHFAZlGE5Tmu4M2tKJQo`

### NIVEL 15

Ingresamos las credenciales para el nivel 15.

* **Usuario:** `bandit15`
* **Contraseña:** `8xCjnmgoKbGLhHFAZlGE5Tmu4M2tKJQo`

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FIZaks1b9168reWYUWp6W%2Fimage.png?alt=media&amp;token=e1c7a719-04ad-427a-a016-4d4698382883" alt=""><figcaption></figcaption></figure>

Para este nivel, necesitas enviar la contraseña del nivel actual al puerto 30001 en `localhost` utilizando una conexión cifrada con SSL/TLS. La herramienta que utilizarás es `openssl`, específicamente el comando `s_client`, que permite establecer una conexión SSL/TLS con un servidor.

* **Establecer una conexión SSL/TLS con el puerto 30001 en localhost**:

  ```bash
  ssl s_client -connect localhost:30001
  ```

  Esto establecerá una conexión cifrada con el puerto 30001 en `localhost`.
* **Enviar la contraseña del nivel actual**:

  Una vez que la conexión esté establecida, escribe la contraseña del nivel actual y presiona `Enter`.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FmBezHxjDmybPD3YGITY8%2Fimage.png?alt=media&amp;token=c49f923e-ef62-44e9-a28b-b0bd1e235d15" alt=""><figcaption></figcaption></figure>

La contraseña es `kSkvUpMQ7lBYyCM4GBPvCvT1BfWRy0Dx`

### NIVEL 16

Ingresamos las credenciales para el nivel 16.

* **Usuario:** `bandit16`
* **Contraseña:** `kSkvUpMQ7lBYyCM4GBPvCvT1BfWRy0Dx`

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FQH52Mf4tiHpjCb71A8px%2Fimage.png?alt=media&amp;token=e2ffd8fa-2a07-4b8a-9024-ded2c38d1134" alt=""><figcaption></figcaption></figure>

Para resolver este nivel, debes realizar dos pasos principales: identificar los puertos en el rango 31000-32000 que están escuchando en `localhost`, y luego determinar cuál de esos puertos utiliza SSL/TLS y te proporciona las credenciales para el siguiente nivel.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2F1kQOWzCDyTCflJwwQllD%2Fimage.png?alt=media&amp;token=019a496b-a6ee-4cad-9e5b-25c9da8d08a0" alt=""><figcaption></figcaption></figure>

Para cada puerto que `nmap` haya identificado como abierto, necesitarás verificar si está utilizando SSL/TLS y si te proporciona las credenciales correctas.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FCK0Nx9EB9zkCq27WNKML%2Fimage.png?alt=media&amp;token=10143650-f215-404b-83d6-52b138fc6f62" alt=""><figcaption></figcaption></figure>

Se sale de la sesión de bandit16 y sea crea un archivo con la clave RSA y se conecta con bandit 17 de esta manera. Se dan permisos 400 al archivo con la clave.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FFkUxSoTjd2PpU2VZFuSD%2Fimage.png?alt=media&amp;token=c65c3464-4a06-451d-a0c1-7b609c40ee4d" alt=""><figcaption></figcaption></figure>

### NIVEL 17

Ingresamos las credenciales para el nivel 17.

* **Usuario:** `bandit17`

En el directorio de inicio hay 2 archivos: `passwords.old` y `passwords.new`. La contraseña para el siguiente nivel está en `passwords.new` y es la única línea que ha sido cambiada entre `passwords.old` y `passwords.new`.

> **Nota:** Si has resuelto este nivel y ves el mensaje **"Byebye!"** al intentar iniciar sesión en `bandit18`, esto está relacionado con el siguiente nivel, `bandit19`.

La salida del comando `diff` muestra que la única línea que ha cambiado entre `passwords.old` y `passwords.new` es la línea que contiene la contraseña para el siguiente nivel.

Aquí está la diferencia:

```diff
42c42
< bSrACvJvvBSxEM2SGsV5sn09vc3xgqyp
---
> x2gLTTjFwMOhQ8oWNbMN362QKxfRqGlO
```

### NIVEL 18

Ingresamos las credenciales para el nivel 18.

* **Usuario:** `bandit18`
* **Contraseña:** `x2gLTTjFwMOhQ8oWNbMN362QKxfRqGlO`

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FFTS1bPPuM41ojfrMziRF%2Fimage.png?alt=media&amp;token=4d0955f3-e454-48a6-bd40-8e96d23e0bfa" alt=""><figcaption></figcaption></figure>

La contraseña para el siguiente nivel está almacenada en un archivo llamado `readme` en el directorio de inicio. Desafortunadamente, alguien ha modificado el archivo `.bashrc` para desconectarte automáticamente cuando inicies sesión mediante SSH.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FYpaQDC2gipg5ROA28FRf%2Fimage.png?alt=media&amp;token=fba90d89-9b15-4d47-925c-4ef834120a2c" alt=""><figcaption></figcaption></figure>

### NIVEL 19

Ingresamos las credenciales para el nivel 19.

* **Usuario:** `bandit19`
* **Contraseña:** `cGWpMaKXVwDUNgPAVJbWYuGHVn9zl3j8`

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FJ9vnzyz3ouTeGHiMy4JS%2Fimage.png?alt=media&amp;token=673ea368-44b4-4ba4-a10c-e621d88d3993" alt=""><figcaption></figcaption></figure>

Para acceder al siguiente nivel, debes utilizar el binario `setuid` que se encuentra en el directorio de inicio. Ejecútalo sin argumentos para descubrir cómo utilizarlo. La contraseña para este nivel se encuentra en el lugar habitual (`/etc/bandit_pass`), después de haber usado el binario `setuid`.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FcnaOpHLQUZaB0yU6rbaP%2Fimage.png?alt=media&amp;token=f737e445-2b12-46ba-9302-f9c019259edf" alt=""><figcaption></figcaption></figure>

### NIVEL 20

Ingresamos las credenciales para el nivel 20.

* **Usuario:** `bandit20`
* **Contraseña:** `0qXahG8ZjOVMN9Ghs7iOWsCfZyXOUbYO`

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FNI6boFb160Kt1Y6T6pQR%2Fimage.png?alt=media&amp;token=dc9dfe41-b041-4c8c-8853-34d372604eb5" alt=""><figcaption></figcaption></figure>

Hay un binario con el bit `setuid` en el directorio de inicio que hace lo siguiente: se conecta a `localhost` en el puerto que especifiques como argumento de línea de comandos. Luego lee una línea de texto de la conexión y la compara con la contraseña del nivel anterior (bandit20). Si la contraseña es correcta, transmitirá la contraseña para el siguiente nivel (bandit21).

> NOTA: Intenta conectarte a tu propio daemon de red para ver si funciona como piensas.

* **Escuchar en un Puerto con `nc`**

  ```bash
  nc -l -p 4444
  ```
* **Ejecutar `suconnect` Especificando el Puerto**

  ```bash
  ./suconnect 4444
  ```
* **Ingresar la Contraseña del Nivel Anterior en la Terminal de nc.**

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FkVMZmWV201EUlvjGOdq5%2FCaptura%20de%20pantalla%202024-08-23%20171845.png?alt=media&amp;token=2a4cbcb2-2c1c-4495-8083-07e826f71340" alt=""><figcaption></figcaption></figure>

&#x20;
