輸入框長度 在XSS測試中如何繞過字元長度限制

2021-10-14 18:23:25 字數 1767 閱讀 9585

幾個月前,我被邀請參加乙個非公共的漏洞懸賞專案,在初期發現了一些漏洞後,就再無收穫。

而在最後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喪失焦點時...