# Auth Skip |  AngstromCTF 2022
Pour commencer nous avons la source du service web en place.
C'est du nodeJS avec comme Framework **ExpressJS**.```JSconst express = require("express");const path = require("path");const cookieParser = require("cookie-parser");
const app = express();const port = Number(process.env.PORT) || 8080;
const flag = process.env.FLAG || "actf{placeholder_flag}";
app.use(express.urlencoded({ extended: false }));app.use(cookieParser());
app.post("/login", (req, res) => {    if (        req.body.username !== "admin" ||        req.body.password !== Math.random().toString()    ) {        res.status(401).type("text/plain").send("incorrect login");    } else {        res.cookie("user", "admin");        res.redirect("/");    }});
app.get("/", (req, res) => {    if (req.cookies.user === "admin") {        res.type("text/plain").send(flag);    } else {        res.sendFile(path.join(__dirname, "index.html"));    }});
app.listen(port, () => {    console.log(`Server listening on port ${port}.`);});```
## Exploitation 
Nous allons nous intéresser à la route avec la méthode GET qui est à la racine du service.Comme toute route, elle prend deux paramêtres une *Request* & une *Response* *(req,res)*.
```jsapp.get("/", (req, res) => {    if (req.cookies.user === "admin") {        res.type("text/plain").send(flag);    } else {        res.sendFile(path.join(__dirname, "index.html"));    }});`````
On voit donc que si nous mettons dans notre Requête des cookie **"user"** qui ont pour valeur **"admin"**.Alors nous recevons le flag pour valider le challenge.
![Pour mettre les cookies](https://i.ibb.co/LppfDHq/chall.png)Nous n'avons plus qu'à actualiser et nous aurons le flag.
    actf{passwordless_authentication_is_the_new_hip_thing}
