在尋找XSS的過程中,會發現從POST或者URL中參數拿到INPUT中存放,但這些input都是hidden不可見的,通過F12調試,查看構造出來的代碼確實存在點擊事件,但是總是觸發不了
通過網上查詢資料,最總找到使用一個比較高級一點屬性accesskey=""來觸發不可見標簽事件,accesskey是HTML語言標簽中的一個全局屬性
<input type="hidden" name="" accesskey="x" onclick="alert(/xss1/)">
使用方式:
提示: 各種瀏覽器下accesskey快捷鍵的使用方法:
IE瀏覽器
按住Alt鍵,點擊accesskey定義的快捷鍵(焦點將移動到鏈接),再按回車.
FireFox瀏覽器
按住Alt+Shift鍵,點擊accesskey定義的快捷鍵.
Chrome瀏覽器
按住Alt鍵,點擊accesskey定義的快捷鍵.
Opera瀏覽器
按住Shift鍵,點擊esc,出現本頁定義的accesskey快捷鍵列表可供選擇.
Safari瀏覽器
按住Alt鍵,點擊accesskey定義的快捷鍵.
經過測試,只有FireFox通過。比較遺憾
最總解決方案思路
- F12 在控制台使用js代碼通過dom定位input
- 使用js修改input type屬性值為text,然后點擊事件觸發
<input type="hidden" id="xss" value="123" onclick="alert(/xss2/)">
控制台輸入:
document.getElementById("xss").setAttribute("type","text");
其實更加高級一點就是將修改屬性的那一步一並封裝到input事件中,就是代碼長了一點
在最近項目中遇到的是代碼中可能使用了某種過濾規則,導致我輸入<>或者(),只要走中間加入字母就會被攔截,無奈使用了跳轉展現出來觸發效果,使用了window.location.href='xxx'