xss学习

本文最后更新于 2025年5月8日 晚上

xss学习

类型一:未对敏感大小符号,引号等进行过滤

1
payload='<script>alert('xss')</script>

类型二:被html实体转义

可以用onfocus事件或onclick事件等on事件绕过

onfocus事件

onfocus事件在元素获得焦点时触发,最常与 <input>、<select> 和 <a> 标签一起使用,以上面图片的html标签<input>为例,<input>标签是有输入框的,简单来说,onfocus事件就是当输入框被点击的时候,就会触发myFunction()函数,然后我们再配合javascript伪协议来执行javascript代码

onclick 事件

onmouseover事件

image-20250114002455486

示例1(xss_lab_level4)

image-20250110225817043

image-20250110225933209

类型三:某些敏感字母被替代

例如onclick被替代为o_nclick

这个时候如果大小没有过滤,就尝试用大小写绕过,否则就需要闭合标签,构造新的标签

a标签的href属性

img

这个属性的意思是可以当a标签被点击可以时可以跳转到某个网站,也可以执行js代码

1
payloa="><a href=javascript:alert('xss')>xss</a><"
示例2

image-20250110234301670

类型三:某些敏感字符串被删除

一些疑似代码的字符串被删除,例如script,on,href等等

这个时候可用双写字符绕过

例如输入oonn,那么把中间的on删掉,之后就是on,hrhrefef删掉中间的href就是href,从而绕过

类型4绝大部分字符被过滤替换删除&添加http://白名单

解决方法一:href属性自带解码功能,可以用unicode编码绕过计算机预定系统

image-20250114192807067

遇到检查输入的字符串是否存在http://,在payload中构造http://,只需要注释掉即可

解决方法二

有些题目可能会把http的referer参数/ua头放在前端,这时候可以抓包伪造referer/ua的内容为payload进行攻击

解决方法三

因为有一些标签的href只允许有http内容的东西通过,这时候可以在payload+注释进行绕过,例如:

1
javascript:alert(1)//http://

xss学习
http://example.com/2025/01/10/xss学习/
作者
清风
发布于
2025年1月10日
许可协议