xss labs 挑战之旅
沒事重新從xss的源碼分析一下形成和利用
查看原碼發(fā)現(xiàn)對輸出沒有進行過濾,直接get參數(shù)輸出
查看原碼發(fā)現(xiàn)對輸出沒有進行過濾,直接get參數(shù)輸出
2. 第二關(guān)進入,看到輸入發(fā)現(xiàn)沒回應(yīng),查看原碼被轉(zhuǎn)義了嘗試構(gòu)造閉合payload: “>
打開源碼發(fā)現(xiàn)一處被htmlspecialchars($str)轉(zhuǎn)義另一處沒有轉(zhuǎn)義
3. 進入第三關(guān)構(gòu)造payload打開原碼發(fā)現(xiàn)尖括號被轉(zhuǎn)義,使用事件函數(shù)oninput onclick 或者onchange payload為’ οnchange=alert’123’ ‘觸發(fā)
查看原碼發(fā)現(xiàn)尖括號被轉(zhuǎn)義
4. 進入第四關(guān) 構(gòu)造payload發(fā)現(xiàn)為黑名單過濾了尖括號使用onclick觸發(fā),使用“閉合payload為
" οnclick=alert ‘123’
查看原碼果然為 黑名單過濾
6. 進去后嘗試payload查看前臺原碼發(fā)現(xiàn)on和script變成了o_n ,s_cript ,嘗試使用a標(biāo)簽實現(xiàn)函數(shù)的調(diào)用,然后用javascript:alert(‘123’)去調(diào)用javascript函數(shù)觸發(fā)構(gòu)造的pyload
"> dian
查看原碼發(fā)現(xiàn)對特定函數(shù)進行了添加_
7. 嘗試構(gòu)造payload發(fā)現(xiàn)上次的href增加了_,嘗試增加大小寫繞過 payload ">dian
查看原碼發(fā)現(xiàn)黑名單果然增加了
8. 構(gòu)造上次的payload發(fā)現(xiàn)href和 script被過濾,嘗試復(fù)寫嵌套”>alert(1)
查看原碼果然是過濾了這些函數(shù)
9. 構(gòu)造payload嘗試發(fā)現(xiàn)給關(guān)鍵字都加上了_ 大小寫也不行,嘗試html編碼繞過成功payload
javascript:alert(1)
查看源碼
9.使用上次的pyload發(fā)現(xiàn)沒有識別,查看前臺原碼發(fā)現(xiàn)提示要驗證http合法性后面添加javascript:alert(1)//http://
查看后端原碼,發(fā)現(xiàn)在以前的基礎(chǔ)上添加了http判斷
10.進入第10關(guān),查看前臺原碼嘗試函數(shù)發(fā)現(xiàn)多了hidden這個參數(shù),發(fā)現(xiàn)t_sort是可以注入的,于是用t_sort來彈窗構(gòu)造payload使用onclick彈出使用text顯示出來payload為 t_sort=" οnclick=“alert(123)” type=“text” “”
11.構(gòu)造payload查看前臺源碼發(fā)現(xiàn)ref字段是http referer的值,參數(shù)嘗試抓包改包,構(gòu)造參數(shù)
9. 構(gòu)造payload查看前臺源碼發(fā)現(xiàn)t_ua字段是http User-Agent的值,參數(shù)嘗試抓包改包,構(gòu)造參數(shù)
14.沒有環(huán)境
15.直接看源碼吧沒試出來
看到這個函數(shù)百度一下是文件包含的一個類,選擇包含還要沒尖括號選擇包l2的
16.查看原碼,發(fā)現(xiàn)輸入的東西經(jīng)過了大小寫的轉(zhuǎn)換并且通過四次的替換檢查,分別對script,空格,/,進行了替換,但尖括號沒有被替換。
可以使用img標(biāo)簽,,可以選擇%0d %0a 進行繞過,構(gòu)造出最后的payload,
<img%0dsrc=1%0dοnerrοr=“alert(123)”>
17.打開源碼發(fā)現(xiàn)了兩個注入點構(gòu)造payload
倆個輸出的值都被做了實體化轉(zhuǎn)義,無法閉合標(biāo)簽,而 embed標(biāo)簽可以加入事件,可以在arg01,或者arg02中加入事件去觸發(fā)
18.嘗試上次的payload直接彈窗
看輸出跟上一關(guān)一樣
19.后邊涉及到反編譯看了大哥的沒看懂,下去再研究一下payload :arg01=version&arg02=%3Ca%20href=%22javascript:alert(%27xss%27)%22%3E111%3C/a%3E
20.payload為arg01=id&arg02=%22))}catch(e){}if(!self.a)self.a=!alert(/xss/)//%26width%26height
總結(jié)
以上是生活随笔為你收集整理的xss labs 挑战之旅的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python生兔子问题(递归算法)_兔子
- 下一篇: BERT: 理解上下文的语言模型