DVWA——XSS(Stored)(low)
阿新 • • 發佈:2021-02-06
XSS(Stored)
介面
原始碼
<?php
if( isset( $_POST[ 'btnSign' ] ) ) {
// Get input
$message = trim( $_POST[ 'mtxMessage' ] );
$name = trim( $_POST[ 'txtName' ] );
// Sanitize message input
$message = stripslashes( $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)) ? "" : ""));
// Sanitize name input
$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();
}
?>
程式碼分析
trim() 方法用於刪除字串的頭尾空白符,空白符包括:空格、製表符 tab、換行符等其他空白符等;
stripslashes() 函式刪除由 addslashes() 函式新增的反斜槓;
可以看到程式碼並未對html標籤進行過濾,可以構建等標籤進行XSS攻擊。
滲透步驟
第一步:在name一欄輸入<script>alert(‘qwe’)</script>
,發現name一欄有字數限制。
第二步:在name一欄隨便輸入,點選sign,使用burp suit抓包,修改name的引數,提交修改後的資料包,發現彈窗,注入成功。
第三步:在message一欄輸入,發現彈窗,證明name以及message都可以進行XSS。