程式碼審計實戰—DWVA-xss-Medium(儲存)
阿新 • • 發佈:2019-02-15
0x00 前言
0x01 start
1.黑盒
<img src=1 onerror=alert(/du/)>
這裡發現出了問題,這裡不能夠進行xss,出現的彈窗是之前測試留下來的。
現在我們在name段使用exp
<img src=1 onerror=alert(/du/)>
出現一個新的問題就是長度不夠。
現在我們有兩種解決方案,f12和抓包,我們使用f12的方式吧。
這裡調整一下,然後看效果。
現在就成功了。
2.白盒
然後我們來看看原始碼
$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 = str_replace( '<script>', '', $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)) ? "" : ""));
首先來看看message。
首先上來就是一個addslashes
幹掉了引號啥的。幹掉string型的sql注入。
然後來看看strip_tags
這裡直接把標籤給去掉了。
然後接著來看mysqli_real_escape_string
把sql注入搞死。
然後接著來htmlspecialchars()
htmlspecialchars() 函式把一些預定義的字元轉換為 HTML 實體。
這裡把xss搞死。
好吧,這個引數是沒啥利用價值了。
我們來接著看看name。
第一重防禦
過濾<script>
這種一般都會被繞過,還是轉化實體厲害。
第二重防禦
防止sql注入,這個倒是防住了。
我們的exp是這個樣子的。
<img src=1 onerror=alert(/du/)>
沒有script所以防不住。