# Command Injection (Medium)

## Consignes

Le flag se trouve à la racine du site web !



## Réalisation

{% hint style="info" %}
Pour contourner la commande prévue par un site WEB, il est possible d’utiliser des caractères spéciaux qui agissent comme des séparateurs de commandes, permettant ainsi de sortir du contexte original et d’exécuter d’autres commandes.

Les principaux séparateurs de commandes sur les systèmes Windows et Unix incluent : <mark style="color:red;">&, &&, | ou |</mark>|.
{% endhint %}



Dans le challenge [command-injection-easy](command-injection-easy "mention"), il était possible de renseigner directement une commande en réalisant simplement une commande `;ls` dans le champs initialement prévu à ne réaliser uniquement à la réalisation d'une requête PING.



Ici, nous ne pouvons pas simplement utiliser `;`  pour injecter des commandes dans le champs disponible.



Il existe cependant d'autres caractères (comme mentionné en début de page), pour effectuer des injections de commandes.\
\
On tente alors d'afficher le FLAG à l'aide du caractère `&` :&#x20;

```bash
& cat flag.txt
```

<figure><img src="https://3120589584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeViYJbe5TWbbasP8qAun%2Fuploads%2F256uFnuz7CuU3UtK9jAG%2FcmdInj.jpg?alt=media&#x26;token=8b2cb488-bcb1-48fb-ad3f-c5478cc20541" alt=""><figcaption></figcaption></figure>



Une fois la commande entrée, on obtient bien le FLAG.

{% hint style="info" %}
Pour ce challenge, voici les commandes essayées qui fonctionnent :&#x20;

* `& cat flag.txt`
* `| cat flag.txt`
* `|| cat flag.txt`
{% endhint %}



Voici donc le FLAG :&#x20;

```
2600{_A7heiMQxOzUjuJjf1YXNN2Q2rwEsfkMgQ4BU52it4s}
```
