在學習xss,推薦一本紅書《XSS跨站腳本攻擊剖析與防御(完整版)》,這個有錢的自己買,沒錢的pdf? ,看完了就差實踐了,謝謝誒
先從DVWA的xss開始學習吧,網(wǎng)上學習xss的少,起碼比sql少
等級先調(diào)成low
Username:admin? ? ? Security Level:low? ? ?PHPIDS:disabled
Reflected Cross Site Scripting (XSS) --low
這里沒有進行過濾任何參數(shù),直接引用了name參數(shù),輸入
<script>alert(xss)</script>彈窗爆出xss.
Medium
`$name = str_replace('<script>'', $_GET['name'] );`
這里過濾了<script> ,采用了黑名單的方式,這里學過sql繞過的筒子應(yīng)該知道的,所以可以用雙寫,或者大小寫繞過啊
<Script>alert(/xss/)<sCript>? 大小寫可以是隨機的
或者<s<script>cript>alert(/xss/)</sc</script>ript> 雙寫的位子也可以是隨機的,學過繞過的應(yīng)該都知道,我就不說了。
High
`$name=preg_replace('/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i','',$_GET['name']?);` 這里用正則過濾了會出現(xiàn)<script>的每個單詞,就是說大小寫和雙寫沒用了,但是由于它只過濾了<script>還可以用其他的js標簽來彈窗,比如 img的onerror報錯,<img src=1 onerror=alert(xss)>? ??onerror指的是在找不到指定圖片或者網(wǎng)速賊慢的時候執(zhí)行的另一個事件,通過一個錯誤的圖片讓彈窗執(zhí)行即可
<body onload=alert(xss)> 同理 在頁面加載之后立即執(zhí)行一段 JavaScript
Impossible
`$name = htmlspecialchars( $_GET['name'] );`
在Impossible里面用了htmlspecialchars把預定義的字符&、”、’、<、>轉(zhuǎn)換為HTML實體,也就是說不能用作html元素了,這樣就不能構(gòu)造代碼了