安全學習之XSS——XSS挑戰之旅

今天算是假期學習的第一天吧,回顧了一下暑假的學習內容,覺得有必要在xss和sql注入這裏重點加強一下,相應的也包括JS,php,sql語言的跟進學習。

學習過程大致是,看書,看視頻,練習,總結。

寒假還有好多事要做,每天的學習儘量提高點效率。少睡覺,少打遊戲,想想自己的未來。

XSS這塊其實內容很多,花樣也很多,可淺可深,目前我打算通過靶場練習一下基本功,就當做玩了。

靶場鏈接:http://xss.fbisb.com/yx/index.php

在這裏插入圖片描述

level1

url:http://xss.fbisb.com/yx/level1.php?name=test

分析:參數name的內容是一個注入點,沒有任何過濾。

payload:
xss.fbisb.com/yx/level1.php?name=alert(0)

level2

在這裏插入圖片描述分析:
有一個輸入框,查看頁面源碼後,需要在input元素中,用">將value以及input閉合。
在這裏插入圖片描述
payload:
在這裏插入圖片描述

level3

分析:輸入level2中的payload,在下圖的value中可以看到 " < >都做了轉義,因此無法閉合input標籤。
在這裏插入圖片描述我們嘗試使用html dom事件,用單引號閉合valu屬性值。構造成功後,當元素被點擊時會被觸發。

payload:’ οnclick='alert(0)
在這裏插入圖片描述

level4

分析:只有< >做了過濾,使用雙引號"閉合引號。
在這裏插入圖片描述payload:" οnclick="alert(0)
在這裏插入圖片描述

level5

分析:對某些單詞做了處理,可以看到script與onclick加了_使其失效。但是我們發現尖括號沒有被過濾,因此可以使用其他方法:先將標籤閉合,使用超鏈接標籤a,在href中設置鏈接爲彈窗。
在這裏插入圖片描述在這裏插入圖片描述
payload:
在這裏插入圖片描述

level6

分析:依然對script和on做了處理,且對href也做了處理,我們嘗試使用大寫繞過。
在這裏插入圖片描述
payload:
在這裏插入圖片描述

level7

分析:直接將href,script,on整個單詞過濾掉。因此我們可以這樣構造:將單詞拆分開,分別寫在前後位置,如果過濾了中間,那麼前後又可以拼接起來。
在這裏插入圖片描述
payload:
在這裏插入圖片描述

level8

在這裏插入圖片描述
分析:用以前的套路嘗試一下,發現轉義了 " < >,因此不能使用超鏈接標籤a來做。但是我們發現本關多出了一個可以點擊的“友情鏈接”,嘗試一下查看頁面代碼後,發現輸入的內容會進入到已有的a標籤中。因此我們不需要像以前一樣閉合input標籤,再添加a標籤,我們直接輸入javascript:alert(0)。
在這裏插入圖片描述
查看頁面源碼後發現script被處理了,修改成大寫也不能解決。嘗試使用實體編號替換script。轉換網址

payload:
ps:不需要全部字母都替換成實體編碼。
在這裏插入圖片描述

level9

分析:這一關不知道咋想出來的,他對鏈接做了格式要求,檢查是否存在http://。
在這裏插入圖片描述payload:
在這裏插入圖片描述或是用註釋繞過:java&# x73;cript:alert(1)//http://

level10

在這裏插入圖片描述分析:沒有輸入框可以作爲注入點了,只能從url入手。和第一關不同,參數keyword對輸入的"><做了過濾,顯然不能利用了。看過頁面源碼後發現有三個input標籤是hidden的,我們嘗試利用這三個標籤完成注入。與在輸入框中輸入代碼類似,只是在url中需要指定標籤name,且需要修改type屬性爲text使輸入框顯示出來。

payload:
在這裏插入圖片描述
在這裏插入圖片描述

level11

分析:嘗試上一關的payload,發現" < >被過濾了,只能通過新出現的t_ref來做文章。
在這裏插入圖片描述嘗試之後,發現在url中修改t_ref的內容,不會注入到頁面源碼中。查了一些資料才知道需要抓包修改文件頭。。。他這個網頁代碼中應該是將t_ref的內容與referer聯繫了起來,所以在url中直接修改沒有效果。

這裏需要藉助其他工具,我們使用burpsuite抓包,添加一項referer,輸入以下payload。這一步驟就相當於之前在url或是在輸入框中輸入代碼一樣。
在這裏插入圖片描述payload:
在這裏插入圖片描述

level12

分析:查看頁面源碼後,發現t_ua的內容是客戶端用戶使用的os以及瀏覽器信息,可以判斷他是http頭中的user-agent。與level11一樣,抓包後,將其修改成注入代碼。
在這裏插入圖片描述payload:
在這裏插入圖片描述在這裏插入圖片描述

level13

分析:查看頁面源碼後看到有一項爲cookie內容,與前兩關類似,抓包後修改cookie的內容即可。
在這裏插入圖片描述
payload:
在這裏插入圖片描述在這裏插入圖片描述

level14

說是跟exif xss有關。
http://blog.sina.com.cn/s/blog_722cb9a90102wl2c.html

level15

參考其他博客,angular js中的ng-include問題,類似於php中的Include,用了一些payload,但發現都不行,它對"<>&都做了轉義。。

payload:

src=‘level1.php?name=< img src=x οnerrοr=alert(1) >’

level16

分析:在url中構造,發現script被過濾掉,之前的一些繞過手段都不行,這裏可以嘗試< img scr=0 οnerrοr=alert(0) >。但是發現空格被轉義了,可以用換行\n的ASCII碼%0a或者歸位鍵\r的ASCII碼%0d代替空格。
在這裏插入圖片描述payload:

<img%0Asrc=0%0Aοnerrοr=alert(0)>

level17

在這裏插入圖片描述在這裏插入圖片描述
payload:

level17.php?arg01= onclick&arg02=alert(0)
或者使用onmouseover。

在這裏插入圖片描述

level18

與level17思路一樣。
在這裏插入圖片描述

level19

分析:按照前面思路構建不成功,僅從頁面源碼已經看不出其他注入思路了。
在這裏插入圖片描述看別人博客說是flash xss,需要反編譯swf文件,找到可以傳值的位置,最終他們找到了a標籤。。
https://blog.csdn.net/u014029795/article/details/103213877

payload:

level19.php?arg01=version&arg02=< a href=“javascript:alert(1)”>123

level20

看到payload的答案,我直接awsl。

總結

我本來也是個小白,刷了幾關後也是學到了很多姿勢,總結一下這個靶場的一些注入和繞過思路。

ps:在Markdown文本中,好像打不出html中的標籤啊。。所以前面的payload都是截的圖片。。

pps:由於沒有去搞這個靶場的源碼,沒有在搭在自己的服務器上,所以無法研究後臺源碼,去深究每一關的構建思想,比如一些過濾。

大體思路就是:尋找注入點,測試查看注入到了頁面的哪些位置,根據注入點的結構構造payload。

1.一些基礎的payload:

  • < script >alert(0)< /script >
  • < a href=“javascript:alert(1)” >123< /a >
  • οnclick=alert(0)或是οnmοuseοver=alert(0)

2.閉合標籤

  • ">或是隻使用單雙引號。

3.繞過思路

  • 大小寫,好像只能在標籤或是其元素中嘗試,雙引號內無影響。
  • 重複寫,例如scrscriptipt,前提是它的過濾規則比較簡單,只會刪除一次。
  • 實體編碼
  • 換行鍵歸位鍵替換空格,用ASCII碼來表示

情況1——input標籤
如果有輸入框,那一般會先在輸入框中嘗試。最簡單的沒有任何過濾,只需要閉合input標籤即可.
payload:">< script >alert(0)< /script >。

如果對script,onclick之類的標籤或是元素做了處理,比如在單詞間加一道_,可以嘗試大寫繞過。如果不行,可以使用標籤a,通過href=javascript:alert(0)構造彈窗。
payload:">< a href=“javascript:alert(1)” >123< /a >

如果將整個單詞都過濾掉了,可以嘗試拆分單詞分別加到前後位置。
payload:">< scrscriptipt >alert(0)< /scrscriptipt >

如果對><做了過濾,可以嘗試 ” οnclick=”alert(0) 。

如果對雙引號做了過濾,可以試一下單引號。

如果對" > < 都做了過濾,目前來說是沒招了。

情況2——有輸入框以及一個可點擊跳轉的鏈接
一般是對輸入內容的"><做了過濾,但是輸入的內容被注入到了鏈接中,即a標籤中的href內容中。

因此可以直接輸入javascript:alert(0)。

如果對某些單詞比如script做了處理:scr_ipt,可以嘗試使用實體編號替換原字符。

情況3——頁面上沒有注入點,只能從url入手
查看頁面源碼,看看可以注入進哪些dom點。

與情況1類似,嘗試在url中指定某些參數構造。

如果"><被過濾了,看看可以注入的參數是不是跟http頭有關聯,如果有的話,可以抓包修改文件頭來完成注入。

如果空格被過濾,可以用%0a或是%0d代替空格。

情況4——其他標籤
因爲html有很多標籤,也有很多插件,很多不熟悉的地方都有可能產生xss,這需要我們多去查資料去了解,並且做到舉一反三。

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