1. 程式人生 > >程式碼審計實戰—DWVA-xss-Medium(儲存)

程式碼審計實戰—DWVA-xss-Medium(儲存)

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所以防不住。