DVWA
  • Introduction
  • About The Author
  • Brute Force
    • Pengenalan
    • Low
    • Medium
    • High
  • Command Injection
    • Pengenalan
    • Low
    • Medium
    • High
  • CSRF
    • Pengenalan
    • Low
    • Medium
    • High
  • File Inclusion
    • Pengenalan
    • Low
    • Medium
    • High
  • File Upload
    • Pengenalan
    • Low
    • Medium
    • High
  • SQL Injection
    • Pengenalan
    • Low
    • Medium
    • High
  • SQL Injection (Blind)
    • Pengenalan
    • Low
    • Medium
    • High
  • XSS (DOM)
    • Pengenalan
    • Low
    • Medium
    • High
  • XSS (Reflected)
    • Pengenalan
    • Low
    • Medium
    • High
  • XSS (STORED)
    • Pengenalan
    • Low
    • Medium
    • High
  • CSP Bypass
    • Pengenalan
    • Low
    • Medium
    • High
Powered by GitBook
On this page
  • Mencari Informasi
  • Melakukan Serangan

Was this helpful?

  1. XSS (STORED)

High

XSS (Stored) level High on DVWA

Di bawah ini adalah source-code dari XSS (Stored) level high di DVWA.

vulnerabilities/xss_s/source/high.php
<?php

if( isset( $_POST[ 'btnSign' ] ) ) {
    // Get input
    $message = trim( $_POST[ 'mtxMessage' ] );
    $name    = trim( $_POST[ 'txtName' ] );

    // Sanitize message input
    $message = strip_tags( addslashes( $message ) );
    $message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
    $message = htmlspecialchars( $message );

    // Sanitize name input
    $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $name );
    $name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));

    // Update database
    $query  = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";
    $result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );

    //mysql_close();
}

?> 

Mencari Informasi

Pada source code di atas terlihat bahwa pattern "<s*c*r*i*p*t" tidak diizinkan pada form Name. Tetapi, pada level medium pun kita tidak menggunakannya, sehingga kita bisa menggunakan cara seperti sebelumnya.

Melakukan Serangan

Kita akan coba seperti pada level sebelumnya, yaitu dengan membuat form Name bisa diisi banyak karakter, lalu diinputkan dengan payload yang sama.

<body onload="alert(document.cookie)">

Mudah bukan? Kita harus teliti dan sering mencoba.

PreviousMediumNextPengenalan

Last updated 5 years ago

Was this helpful?

Alhamdulillah! Materi Stored XSS akhirnya selesai juga kita pelajari. Tetap semangat dan lanjut ke materi selanjutnya!

🔥