幾個月前,我被邀請參加乙個非公共的漏洞懸賞專案,在初期發現了一些漏洞後,就再無收穫。
而在最後5天裡,出於對金錢的渴望,我告訴自己必須在整個專案結束之前再找到一些漏洞,因此我又從頭開始梳理整個目標。
這個目標是乙個大型的社交網路,而轉折就發生在我去建立乙個新的帳戶時。
當我在使用者名稱處輸入乙個xss的payload時,特殊字元: <:>
全不能輸入,而且長度限制為20個字元。
此時,我沒有太好的辦法,只能去尋找其他漏洞。
我很快進入到「個人資料」頁面,嘗試編輯我的使用者名稱。是的,的確沒有了敏感字元限制!
但是,這個長度還是被限制在20個字元以內。
我首先輸入乙個簡單的payload來確認xss的存在:,這個長度為20個字元。
輸入並儲存後,我轉向第乙個**,並成功在「個人資料」頁面發現了彈框!
接下來,我開始**如何竊取cookie,因為危害越大,獎勵越高。
不過由於無法繞過長度限制,所以如何才能用小於20個字元的xss來竊取cookie?xsshunter工具的確很有用,但payload都太長了,所以我花費了很久的時間不停尋找新方法。48小時之後,我發現了這條來自2023年的推特,其中的payload的確很短,來自@0x6d6172696f:
,只有18個字元。其中
₨
代表印度盧比,這是1個字元,而不是2個字元,而⑭
也是類似的效果。當你訪問把這個url貼上到瀏覽器去訪問時,會發現如下情形:
是的,變成了14.rs
,我們用三個字元代替了5個字元!!
雖然推特中表示,它只在edge瀏覽器中生效,但經過測試,我發現chrome和firefox瀏覽器也受到影響。
現在,我必須租乙個.rs
網域名稱,但這對我來說非常高昂貴(大約90美元),所以我開始尋找一種更廉價的方法。
很快,我便想到去namecheap.com
(感謝@brutelogic)購買乙個根域為兩個字元,但網域名稱包含特殊字元的網域名稱。最終我確定了rsrs.pw
,這大概是每年90美分,所以網域名稱+dns等於2.10美元。
購買網域名稱後,我直接將rsrs.pw
指向xsshunter.com
的某個鏈結,也就是指向xss的payload。我迅速進入到個人資料
頁面,往輸入框插入了,一共20個字元,然後儲存並再次訪問我的個人資料:
1個月後(直到他們解決這個漏洞),我收到了600多名受害者的cookie。
當你看到字元長度或某個字元被限制時,可以嘗試找一些特殊字元(或許可以從希臘字典中找到),能起到1個字元代替2個字元,或者繞過安全限制的效果。
此外,當找到乙個漏洞時要盡量提高它的危害性,這能帶來更高的獎勵,更好地鍛鍊自己。
原文:白帽匯從事資訊保安,專注於安全大資料、企業威脅情報。
為您提供:網路空間測繪、企業資產收集、企業威脅情報、應急響應服務。
如何禁止使用者在文字輸入框中輸入數字
要想禁止使用者在文字框中輸入數字,首先要判斷使用者是否輸入的是數字,如果是數字的話,怎麼禁止呢?這裡,我巧妙地利用了文字框的唯讀屬性 如果是數字,將該屬性設定為真,使用者的輸入就無效了。在釋放按鍵時,再將該屬性設定為假,接受使用者的下一次輸入。相關 如下 private void txttest k...
在HTML中限制input 輸入框只能輸入純數字
限制 input 輸入框只能輸入純數字 1 onkeyup value value.replace d g,使用 onkeyup 事件,有 bug 那就是在中文輸入法狀態下,輸入漢字之後直接回車,會直接輸入字母 2 onchange value value.replace d g,使用 onchan...
在HTML中限制input 輸入框只能輸入純數字
1 onkeyup value value.replace d g,使用onkeyup事件,有bug,那就是在中文輸入法狀態下,輸入漢字之後直接回車,會直接輸入字母 2 onchange value value.replace d g,使用onchange事件,在輸入內容後,只有input喪失焦點時...