xsslabs靶場1-10

level1

看了看level1的源碼

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()  
{     
confirm("完成的不錯!");
 window.location.href="level2.php?keyword=test"; 
}
</script>
<title>歡迎來到level1</title>
</head>
<body>
<h1 align=center>歡迎來到level1</h1>
<?php 
ini_set("display_errors", 0);
$str = $_GET["name"];
echo "<h2 align=center>歡迎用戶".$str."</h2>";
?>
<center><img src=level1.png></center>
<?php 
echo "<h3 align=center>payload的長度:".strlen($str)."</h3>";
?>
</body>
</html>

通過$_GET[“name”],獲取name的值,沒有過濾通過echo直接進行了輸出,get請求的name變量放入xss腳本,完整的返回在html中,瀏覽器響應xss腳本

構造payload:name=<script>alert("xss")</script>

在xss中擁有同樣彈窗效果的函數不止alert,還有confirm以及prompt

從代碼角度去看,可以發現就是直接用GET方式獲取參數然後輸出到瀏覽器上面,這是典型的沒做過濾。怎麼防禦?可以加一個轉義函數htmlspecialchars把一些html格式的東西編碼就可以有效防止了。

uJANSf.png

level2

像上一關一樣輸入<script>alert("xss");</script>,並沒有彈窗,回顯如下:

uJEVBQ.png

再看看源碼

uJEJHJ.png

劃紅線部分就是提交的參數了,我們發現這裏是可以閉合前面的引號和**>**,再構造xss彈窗

payload:"/><script>alert("xss");</script>

uJVVxK.png

level3

輸入上一關的試試,當然沒用

uJeruT.png

看看源碼

uJef81.png

發現提交的xss腳本中的**<>**都沒了,應該是被htmlspecialchars函數過濾了

所以這裏可以用單引號閉合value,卻沒辦法閉合input標籤,但是可以註釋掉後面標籤然後用事件彈窗,這裏介紹幾個常用的事件函數,比如onchange, onclick, oninput等等

payload:1' onclick=alert("xss")//

uJKHyt.png

level4

輸入"/><script>alert("xss");</script>測試一下,

uJMFmV.png

**<>**依然被轉義,再試試點擊事件彈窗

payload:1" onclick=alert("xss")//

uJQkjI.png

level5

輸入"/><script>alert("xss");</script>,發現<script>標籤被過濾

uJQXGQ.png

輸入1" onclick=alert("xss")//測試,

uJQ029.png

可以看到onclick也被過濾,但是可以看到尖括號沒有被過濾

所以可以構造a標籤,再嘗試利用a標籤的href屬性執行javascript:僞協議,"><a href="javascript:alert(1)",沒有對javascript進行過濾,觸發xss

uJ8gOA.png

level6

輸入"><script>alert("xss")</script>測試,<script>標籤被過濾

uJ8bOs.png

輸入" onclick=alert(1)//測試,onclick被過濾

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-DcmpPctj-1570539785325)(C:\Users\17295\AppData\Roaming\Typora\typora-user-images\1569811007499.png)]

輸入"><a href="javascript:alert(1)"測試。發現href也被過濾

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-FoAjgT4H-1570539785326)(C:\Users\17295\AppData\Roaming\Typora\typora-user-images\1569811096641.png)]

嘗試是用大小寫繞過

payload:"><a HREF=" javascript:alert(1)"

或者"> <Script>alert('123')</script> //

uJYfT1.png

level7

按照前面的套路試了一遍,發現script、on、href都被過濾,大小寫都被過濾

使用雙寫單詞來繞過

payload1:" oonnclick=alert(1)//

payload:"><a hrhrefef=" javascscriptript:alert(1)"

uJBPPA.png

uJBvzq.png

level8

隨便輸了一個試試,查看源碼

uYdiSx.png

發現原本就有一個href標籤,所以直接添加javascript:alert(1)即可,可是會發現script被過濾了,轉換大小寫也不行,

uYsout.png

可以發現還有一處調用的字符串裏面沒有使用這樣的函數去進行防護,可以利用這一點下功夫,嘗試編碼繞過,進行html編碼之後可以成功饒過,

&#x6A;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3A;&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;

(其實這裏編碼的話只編碼script其中一個字符就可以)

uYd4c6.png

level9

輸入javascript:alert(1)測試一下

uY0PsK.png

發現這次的輸入沒有在href標籤那裏,所以,再試試"><script>alert(1)</script>

uY06Y9.png

尖括號和引號都被過濾,看來害的編碼

使用上一關的poc試試,也不行,,,只能看看源碼

uYyAC4.png

發現這裏對url進行了限制,必須包含http://

嘗試構造javascr&#x69;pt:alert(1)http://,居然不對、、、

uYc5v9.png

確實不對,那該怎麼辦呢,兩

個解決辦法:註釋或者把http://放到aler()裏面

javascr&#x69;pt:alert(1)//http://

javascr&#x69;pt:alert(&#x22;http://&#x22;)這裏吧引號編碼

uYcR4U.png

level10

明面上沒有看到輸入框,但是url欄裏可以輸入

uYgqLn.png

uY2vnA.png

發現尖括號被過濾,但是這裏有三個隱藏的參數,不明白,看看源碼

uY2O6H.png

keyword被htmlspecialchars過濾,但是還有一個參數t_sort沒有防護,只是過濾了尖括號,然後放到了一個input標籤中隱藏起來

可以閉合雙引號,使用onclick事件,然後把隱藏的標籤用text方式回顯出來即可,最後的payload

t_sort=" onclick=alert(1) type="text"

uYh9tx.png

level11

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章