Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add badAuth challenge #22

Open
wants to merge 14 commits into
base: master
Choose a base branch
from
7 changes: 7 additions & 0 deletions badAuth/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FROM php:8-apache

# Copia il tuo index.php nell'immagine
COPY src/website/index.php /var/www/html/

# Imposta la porta di esposizione del server web
EXPOSE 80
30 changes: 30 additions & 0 deletions badAuth/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# badAuth

## Descrizione
Ti trovi di fronte al velo delle ombre, una CTF dove la sfida BadAuth è avvolta in un mistero oscuro. Un binario, noto solo come il Sigillo Nefasto, ti è stato consegnato. La sua autenticazione è protetta da un'aura insidiosa. Il tuo compito è penetrare questa oscura barriera e scoprire il segreto celato dietro il velo.

HINT: Analizzare i pacchetti in entrata successivi all'esecuzione del binario potrebbe esserti di aiuto.

*Author: [@benjamin](https://github.com/b3nj4m1no)*

## Soluzione
La categoria della challenge era Network.
Nelle challenges di categoria Network, solitamente ci viene fornito un file .pcap, questa volta invece ci è stato fornito un eseguibile... Un eseguibile ?
Eseguiamo...
![eseguibile](https://i.postimg.cc/2S8PWfSr/eseguibile.png)
Possiamo notare che viene stampato un json... Quindi fa una richiesta ad un sito web?
Non abbiamo il file .pcap, ma possiamo crearlo!
![wireshark interface](https://i.postimg.cc/qB6BtyZj/wireshark.png)
Analizziamo tutti i pacchetti che arrivano sulla scheda di rete! (Cliccando su any)
A questo punto possiamo eseguire di nuovo l'eseguibile... e aspettare.

![change](https://i.postimg.cc/MGzXVHjX/change.png)

Ok la abbiamo! Richiesta POST con paramentro authCode=false.
Passando autCode=true ci farà entrare?
![solved](https://i.postimg.cc/76DcxvcF/solved.png)

Si! Ci fa entrare! Corriamo a fare questo first blood.

## Flag
havceCTF{sn1fFiNg_4_b1n4rY_1s_tH3_La5t_r3s0rT!}
8 changes: 8 additions & 0 deletions badAuth/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
version: "3"
services:
badAuth:
build: .
ports:
- 3434:80
environment:
- FLAG="${FLAG_BADAUTH}"
Binary file added badAuth/src/badAuth
Binary file not shown.
39 changes: 39 additions & 0 deletions badAuth/src/website/index.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Authorization Check</title>
</head>
<body>
<h1>TODO: Implement a Client Side</h1>
</body>
<?php

if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST["authCode"])) {
$authorizationCode = $_POST["authCode"];

if ($authorizationCode == "true") {
$response = array("Autenticato" => true, "Flag" => "flag{sn1fFiNg_4_b1n4rY_1s_tH3_La5t_r3s0rT!}");
} else {
$response = array("Autenticato" => false, "Messaggio" => "Chiave non valida");
}

header('Content-Type: application/json');
echo json_encode($response, JSON_PRETTY_PRINT);
exit();
} else {
header("HTTP/1.1 400 Bad Request");
echo json_encode(array("error" => "Il parametro 'authCode' è obbligatorio."));
exit();
}
} else {
header("HTTP/1.1 405 Method Not Allowed");
echo json_encode(array("error" => "TODO: Implement a Client Side. Solo richieste di tipo POST sono consentite."));
exit();
}

?>
</html>