前言我们下面进行下一个漏洞——XSS的学习XSS是常见漏洞之一是Web安全入门必学漏洞。为探讨清楚XSS的诸多细节我们特以经典的pikachu靶场的xss进行从入门到进阶的专项训练。在做题过程中作者把用到的知识进行了全面、详细、系统的总结所以为了方便学习查阅完全适配此文的总结是必不可少的怎么可以光训练不去学习、总结呢。作者的总结深入剖析XSS跨站脚本漏洞原理、分类、利用与防御-CSDN博客靶场搭建参考下文告别环境配置噩梦phpStudy小皮面板Windows 下载与安装全指南-CSDN博客目录1.反射型xssget2.反射型xsspost3.存储型XSS4.DOM型xss5.DOM型XSS-X6.xss之盲打7.xss之过滤8.xss之htmlspecialchars9.xss之href输出10.xss之js输出1.反射型xssget输入测试攻击代码 payloadscriptalert(1)/script发现无法在输入了右键点击检查发现输入框先知了输入长度 20我们直接改为100就好再次输入测试语句 scriptalert(1)/script2.反射型xsspost我们发现一个登录框我们在暴力破解那一关获取到了管理员账号和密码即账号admin密码123456如果没做暴力破解我们也可以点一下提示看一下再来输入攻击载荷payloadscriptalert(xss)/script可能有人会疑惑这一关和上一关不是一样吗不是这样的哦post和get请求是有区别的1. 数据传输方式1. GET请求数据通过URL中的查询参数附加在URL后面以明文形式传输数据。2. POST请求数据作为请求的正文发送而不是通过URL传递。2. 数据长度限制1. GET请求有长度限制受浏览器和服务器对URL长度的限制。2. POST请求没有固定的长度限制适合传输大量数据。3. 数据安全性1. GET请求数据以明文形式暴露在URL中容易被窃听和拦截。2. POST请求数据在请求正文中传输并可以使用加密协议如HTTPS进行传输相对更安全。4. 数据缓存1. GET请求可以被浏览器缓存可以提高性能。2. POST请求通常不被浏览器缓存。仔细观察就会发现get型的那一关我们输入的payload在url中有显示而post则没有显示3.存储型XSS使用上一关的攻击载荷scriptalert(xss)/script来测试结果结果是成功的但是它和反射型的不一样存储型就是字面意思它的攻击不是一次性的一旦提交哪怕你下次再到这个页面还是会被攻击到。4.DOM型xssDOM 型 XSS​ 是一种特殊类型的跨站脚本攻击攻击代码不经过服务器直接在客户端浏览器中通过 JavaScript 操作 DOM 时触发。输入攻击载荷payload测试发现输入的scriptalert(1)/script被拼接到href属性中而href不会解析 HTML 标签因此脚本无法执行换一个攻击载荷 οnclickalert(xss)5.DOM型XSS-Xpayload和上一关一样唯一的区别就是这一关是从url中获取我们提交的参数体现的题目上就是我们多点了一下6.xss之盲打这一关是什么意思呢盲打也就是我们在前端并不能看到我们的代码无法判断xss是否成功只有在后台才能看到我们构造payloadscriptalert(xss)/script测试后台登录地址 http://ip/pikachu/vul/xss/xssblind/admin_login.php 账号admin 123456成功弹窗并且弹了两次也就是说两个输入框都有xss漏洞7.xss之过滤使用常用的攻击载荷测试scriptalert(xss)/script发现被过滤得只剩 “ ”了那就只能换个了比如 a href οnclickalert(xss)8.xss之htmlspecialchars继续先使用我们构造的payloadscriptalert(xss)/script测试检查看下什么原因发现被转义了换个payload οnclickalert(xss)9.xss之href输出继续先使用我们构造的payloadscriptalert(xss)/script测试发现无法成功那就换个使用 javascript:alert(1)10.xss之js输出继续先使用我们构造的payloadscriptalert(xss)/script测试并没有反应我们查看源代码发现script标签对应关系有问题那么我们只需要想办法闭合掉第一个script就可以了使用攻击载荷 /scriptscriptalert(xss)/script成功