幸福是魔鬼的牢笼,当幸福化为泡影,魔鬼就会冲出牢笼,毁灭世界。
这些资料都是在网上找到了,只有一小部分才是自己总结的知识点,为了把这些知识点变成自己的,需要反复的背与狂练习。
弹窗标签
a标签点我啊
#javascript协议
点我
# data协议
# url编码的data协议
点我
# 另两种方式实现
script标签
# 直接弹窗
# javascript协议编码
# 如果输出是在setTimeout里,我们依然可以直接执行alert(1)
button标签点我
# 点击弹窗
# 不需要点击就能弹窗
p标签
点我
# 可以直接使用事件触发
img标签
# 可以使用事件触发
body标签
# 事件触发
# 第二个没看懂...,百度后知道 onscroll 事件在元素滚动条在滚动时触发,即页面存在很多内容,需要滚动才能看到下面的内容的是偶,就会触发
var标签M
# 事件触发,一般是用不需交互的事件比如鼠标移动等
div标签
# 事件触发
input标签
和button一样通过autofocus可以达到无需交互即可弹窗的效果。
select标签
textarea标签
keygen标签
frameset标签
svg标签
math标签CLICKME
test1
video标签
audio标签
embed标签
meta标签
测试时发现昵称,文章标题跑到meta标签中,那么只需要跳出当前属性再添加http-equiv=”refresh”,就可以构造一个有效地xss payload。还有一些猥琐的思路,就是通过给http-equiv设置set-cookie,进一步重新设置cookie来干一些猥琐的事情。
marquee标签
isindex标签
xss绕过
个人xss绕过分两种,第一种是有一些标签没有过滤导致弹窗,另一种则是通过编码大小写等方式绕过,这两种都需要大量的基础知识功底和耐心的反复练习。
1. 单次过滤规则绕过:有些规则仅进行一次过滤替换,可以通过双重复写绕过ipt>
2. 大小写绕过:
3. alert被过滤,可以尝试prompt和confirm
4. 没有引号和分号:
5. 空格被过滤:
6. 和是等效的,没有过滤&,#等符号,我们就可以写入任意字符
6. 长度限制时: //在限制长度的地方很有效
7. 单引号及双引号被过滤情况: //用双引号会把引号内的内容单独作为内容 用斜杠,则会连斜杠一起回显
8. 括号被过滤,可以使用throw来抛出数据2
9. 过滤某些关键字(如:javascript) 可以在属性中的引号内容中使用空字符、空格、TAB换行、注释、特殊的函数,将代码行隔开。比如在使用时,可以用回车、Tab键将src中的内容隔开,回车的url编码为%0a,%0b; 拼凑法:① 双写绕过;② 使用js定义变量z=scri, z+pt=script; ③ 两处输出点pt>;
10. 当返回结果在 svg 标签中的时候,会有一个特性 YourInput 可控,输入 www.site.com/test.php?var=text";alert(1)// 如果把 “ 编码一些他仍然能够执行:
这些知识都是网上的,并非自己的,如果想收为己用就需要强烈的反复的背与练习,才能变成自己的技能。
读 心伤的瘦子 文章
直接输出
即你插入什么就输出什么,这个时候直接插弹窗就行。
输出再script标签里面
闭合script后,插入弹窗
输出再html标签
使用事件触发,即onerror,onclick,onmousemove等等实现触发弹窗
宽字节注入
只要网页的编码是gbxxx的,发现单引号双引号背过滤则可以通过宽字节注入
即你只需要再引号前加速%0c即可
换行符绕过
如果输出的内容再js中,尝试再插入弹窗前加上%0a(就是换行的url编码),其中\r\n对应(%0a%0d)就是unix中换行,再服务器返回的请求头部信息和返回的内容主体中就是两个\r\n,如果传入的参数传入换行符,后端没有过滤的话,就会造成slrf漏洞,即控制你返回的内容中插入代码,这一点是chrome浏览器没办法屏蔽的,因为返回的内容是后端服务器返回的。
这里不说这么深入,只讨论\n对应的%0a,在插入的弹窗前面加速%0a,查看返回的内容有无换行。
如何获取注入点
发现瘦子能找到xss的位置url,这些很细节的url如果手动还是好发掘,再浏览器f12抓包就能找到,我想通过工具实现对这种network中传递的隐形的url批量获取,这种url链接很少能通过爬虫找到,所以想通过selenium来试一试。
关于存储型XSS挖掘
网上有表哥鸭王给出了思路,对一些传递存储数据的位置,一次性插入一百条payload,然后访问,检测是否弹窗,简直优秀啊
常见可存入输入字符串的地方:
邮件、留言、BBS、在线客服、投稿、新建xxx。