了解XSS首先要了解HTML里面的元素:共有5种元素:空元素、原始文本元素、 RCDATA元素、外来元素以及常规元素。

空元素
area、base、br、col、 command、 embed、hr、img、 input、keygen、ink、meta、 param、 source、tack、wtbr
原始文本元素
script、stye
RCDATA元素
textarea、tte
外来元素
来自 MathML命名空间和SvG命名空间的元素。
常规元素
其他HTML允许的元素都称为常规元素。

常用JS事件
on Click()
on Error()
on Focus()
on Copy()
on Mousewheel()
on MouseOver()

弹窗函数:aert、 prompt、 confirm
html中使用 script标签调用弹窗函数构造弹窗语句示例:<script>alert("xss")</script>

XSS漏洞的本质是一种注入,是一种静态脚本代码的注入。
那么大体挖掘思路就显而易见了:寻找可控点参数)->尝试注入

跨站脚本出现场景分析

1:输出内容在标签内
普通标签如<pre>内

<pre>[----用户输入----]</pre>

<html>
<head></head>
<body>
<pre>
<svg onload="alert(1)"></svg>
</pre>
</body>
</html>

RCDATA标签如< textarea>内

需要先闭合Textarea标签,然后再新建标签触发XSS

<html>
<head></head>
<body>
<textarea></textarea>
<svg onload="alert(1)"></svg>
</body>
</html>

  

输出内容在标签属性中
输出在普通标签的value属性中

相关案例
<input type='text' value='[---用户输入---]'>
测试方法
1.闭合单双引号(" , ')(属性),然后定义一个新的事件,在件里执行对应的 Payload进行触发。例如上面样例,利用
方法如下
<input type="text” value=" onclick="alert(1)"> (" onclick="alert(1)为输入) 通过闭合vaue属性的双引号后。新定义了 onclick事件,只需要点击该标签即可触发 2.闭合单双引号("、')(属性)后直接闭合标签, 然后自行新建标签进行触发,例如上面样例,利用方法如下: < input type="text” value=""><svg/onload=alert(1)>"> ("><svg/onload=alert(1)>为输入) 通过闭合vaue属性的双引号后,然后再写入>闭合了前面的nput标签,然后新建了svg标签操作进行触发。

输出在src/href属性中(考虑使用协议)利用协议(常用的JavaScript协议,data协议)

<iframe src="javaScript:alert(1)"></iframe>   (javaScript:alert(1)为输入)

输出内容在script标签中:尝试闭合原js语句进行触发

输出内容在Content-type为text/javascript的响应包中尝试闭合原js语句进行触发;

输出内容在CSS代码中:IE浏览器支持CSS中的 expression,利用类似此表达式可以执行XSS。(IE678下通用):

<span style="color:1;x:expression(alert(/xss/));"></span>

最新文章

  1. MongoDB【第二篇】MongoDB逻辑与物理存储结构
  2. 安装SQLSERVER2012遇到的一些问题
  3. paip.提升效率---filter map reduce 的java 函数式编程实现
  4. Android实现边缘凹凸的View
  5. Apache开启伪静态后报500错误.
  6. DOM querySelector选择器
  7. TPshop用户模块的数据库表关系
  8. springboot 热部署 idea版本(转)
  9. mysql数据库管理工具navicat for mysql怎么用
  10. docker php容器中简单添加seaslog拓展
  11. python爬虫之scrapy文件下载
  12. Centos7在单用户模式下重置root密码
  13. CentOS6.5安装mysql以及常见问题的解决
  14. 小朋友学C语言(2):安装Dev C++编译器
  15. 解决idea控制台乱码及项目乱码
  16. python函数传入参数(默认参数、可变长度参数、关键字参数)
  17. UVALive 6913 I Want That Cake 博弈dp
  18. 在ASP.NET MVC实现购物车,尝试一种不同于平常的购物车显示方式
  19. go语言之进阶篇数组越界导致panic
  20. Golang实现一个密码生成器

热门文章

  1. 数据可视化实例(十): 相关图(matplotlib,pandas)
  2. 互联网的寒冬下各大一线互联网公司还在用SpringBoot这是为什么?
  3. python学习03-使用动态ua
  4. 【Python学习笔记一】基础环境安装:idea+python
  5. Vuex与axios的封装和调用
  6. javascript兼容问题 : let降级到var 遇到的闭包问题的解决方法
  7. 感知机算法(PLA)代码实现
  8. Linux字符集的查看及修改[转]
  9. Salt 系统初始化
  10. python线程,进程,队列和缓存