XSS的学习笔记
xss的原理
xss的分类
反射性xss

例题1
很明显输入的值被传到h标签里了
例题2
input表单的value得到值提交给h标签
可以看到<>在input中是正常的,到h标签中就被转义了,所以我们只能从input中想办法
写">闭合input,再写恶意代码,就OK了
例题3
aaa传值给了submit
发现input也转义<>,
例题4
将<>直接转换成空格
还可以用on事件,
例题5
不可以用on事件
看源代码,确实过滤了,但是input却没有转义<>
构建一个a标签
例题6
替换了href
用大写的HREF就绕过了
用属性大写onfocus也是可以绕过的
例题7
替换很多变成空格
通过过滤关键字中间插入关键字的方式成功绕过
例题8
限制条件更加多,将"也过滤了
input value的值传给a标签,所以只要进行html实体编码就可以绕过input的限制,传给a标签的href属性,href在解析前html实体编码刚好解码
将javascript:alert(1)进行html实体编码
例题9
在8的基础上加上必须有http://的字段,所以在最末尾加上//http://就OK了
例题10
给了个值keyword,但是用函数过滤了<>,所以找input,只有t_sort有接受值,但是它hidden,所以我写了type覆盖了后面的。
存储型xss
例题1
首先,该提交能入库
尝试在评论区评论
发现实体编码转义,标签变成普通字符
输入两次评论后发现,
这里我们可以看到并没有完成闭合,但是评论回显是倒序出现的,同时中间夹着我们本机的IP地址,这个IP我们是否可以进行利用,从而配合我们的评论完成XSS注入。其实是可以的,这里我们需要用到X-FORWARDED-FOR来进行HTTP请求端真实IP伪造,通过这个字段将IP地址进行伪造为我们使用的payload。 思路确定了,我们使用多次注入的方式,同测试一样完成我们的闭合,即:
正常payload:
<script>alert(11111)</script>
达成的效果(将中间的代码注释掉):
<script>/**/alert(11111)/**/</script>
多次注入:
<script>/*
*/alert(11111)/*
*/</script>
将payload多次拆分,使用两条留言完成注入:
第一次:
内容:*/alert(11111)
IP伪造为:X-FORWARDED-FOR: */</script>
第二次:
内容:随意都行
IP伪造为:X-FORWARDED-FOR: <script>/*
然后使用Burp进行抓包改包(伪造IP):
第一次
第二次
闭环形成,就等管理员审核
用xss hunter获取信息
http://172.16.100.1:3000/hook.js换成hunter提供的网址
DOM型XSS
例题1



