简单来说,xss
就是通过 html
注入篡改网页内容,用户访问时就会触发恶意代码从而达到目的
反射型与存储型
xss
反射:当数据发送到服务器时才会生效,由此只有当诱导用户点击链接时才会生效
存储:输入的代码会长期存在于服务器端,每当用户访问网站就会触发
$Low$
针对没有任何转义防护的网站,直接提交对应的
xss
语句即可,这里练习一下基本的操作和对模块的应用1
<script> alert("qwq") </script>
经典的
JS
脚本注入,可以通过alert
得到相应信息,例如1
alert(document.cookie)
$Medium$
用了常见的
str_replace
来替换<script>
可以通过双写或者大小写来轻松绕过
$High$
彻底ban掉了
<script>
标签,但还有别的 $JS$ 事件仍能执行命令,比如用img
1
<img src=# onerror=alert("xss")>
$DOM$ 型
xss
该类型下注入的
xss
不与服务器进行交互,而是通过浏览器前端的 $dom$ 树解析$Low$
乱改一下网址栏再看下源码得知,有一段 $JS$ 脚本将默认选择的语言又重新写入到界面中
那么直接在网址栏
default
的地方插入xss
语句即可$Medium$
看源码得到
<script>
被屏蔽掉了,那么转而用img
上传后发现并没有弹窗,检查一下
看到被闭合在
<select>
和<option>
中,并没有作为值存在,所以手动闭合它们1
</option></select> <img=1 onerror=alert("xss")>
$High$
用了白名单,仅允许预设的四种语言作为
default
,但值得注意的是判断代码在服务器端,前端并没有判断功能,那么用#
注释掉插入的xss
代码,使服务器仅接受白名单的语言,在前端直接与浏览器进行交互