# Medium

Di bawah ini adalah *source-code* dari XSS (Reflected) level medium di DVWA.

```php
vulnerabilities/xss_r/source/medium.php
<?php
​
header ("X-XSS-Protection: 0");
​
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Get input
    $name = str_replace( '<script>', '', $_GET[ 'name' ] );
​
    // Feedback for end user
    echo "<pre>Hello ${name}</pre>";
}
​
?> 
```

## Mencari Informasi <a href="#mencari-informasi" id="mencari-informasi"></a>

Pada level ini terdapat validasi untuk menghilangkan tag `<script>` pada inputan. Jika kita menggunakan *payload* sebelumnya, maka hasilnya akan seperti berikut:

```
<script>alert('Hacked')</script>
```

![](https://gblobscdn.gitbook.com/assets%2F-LzH5Vfe8_AlGL8KPrs2%2F-LzkZPo3zvmJtFO8Vysd%2F-LzkzWQ8_AwYblMLwHQV%2Fimage.png?alt=media\&token=90f08494-2b0a-450a-a11c-a66cab23994d)

Untuk mengatasi ini kita harus mencari cara untuk menjalankan JavaScript pada web tanpa menggunakan tag `<script>`.

Ada salah satu cara yang menjadi favorit saya saat ini yaitu menggunakan [HTML onload Event Attribute](https://www.w3schools.com/tags/ev_onload.asp).

## Melakukan Serangan <a href="#melakukan-serangan" id="melakukan-serangan"></a>

Sekarang kita akan membuat *payload* seperti berikut:

```markup
<body onload="alert('Hacked')">
```

![](https://gblobscdn.gitbook.com/assets%2F-LzH5Vfe8_AlGL8KPrs2%2F-LzkZPo3zvmJtFO8Vysd%2F-Lzl-bsT01Tj2v36O51i%2Fimage.png?alt=media\&token=5568c609-1ab8-4c55-9576-10222ebb8cf9)

Yup! Berhasil.😉​

Jika kita menggunakan *view source*, maka akan tampil seperti berikut:

![](https://gblobscdn.gitbook.com/assets%2F-LzH5Vfe8_AlGL8KPrs2%2F-LzkZPo3zvmJtFO8Vysd%2F-Lzl-x-NM8MPZeOstPlD%2Fimage.png?alt=media\&token=abdc46ee-414b-430a-b0d5-ccb0f02af498)

Terlihat *script* yang kita sisipkan berhasil dijalankan.

Happy Hacking! 🍻
