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