ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

XSS haozi.me靶场通关笔记:从 0x00 到 0x09 的 Payload 与绕过思路

XSS haozi.me靶场通关笔记:从 0x00 到 0x09 的 Payload 与绕过思路 免责声明本文仅记录个人在授权 XSS 靶场中的学习过程所有 Payload 仅用于合法测试环境请勿用于未授权站点。最近整理之前打过的 XSS 随堂靶场想着既然打都打了不如把通关过程整理成一篇博客。本文记录了从0x00到0x09共 10 关的 Payload、绕过思路和简单原理适合刚接触 XSS 的朋友参考一、环境说明靶场类型XSS 练习靶场 / 随堂靶场浏览器Chrome测试方式在输入框提交 Payload观察是否弹窗目标理解反射型 XSS 中常见的闭合、过滤绕过与标签解析特性0x00 无过滤直接注入 script考点没有任何过滤最基础的反射型 XSS。Payloadscriptalert(1)/script说明输入内容被直接输出到页面中没有经过 HTML 实体编码也没有过滤标签。浏览器把script当作脚本执行成功弹窗。0x01 textarea 标签闭合考点输入点位于textarea标签内部需要先闭合标签。Payload/textareasvg/οnlοadalert(1)说明如果直接输入script它会被当成 textarea 的文本内容而不会被执行。所以要先写/textarea把前面的标签闭合再插入 SVG 标签利用onload事件触发 JS。原文里写的是textareasvg/onloadalert(1)更准确地说核心是先闭合/textarea再插入执行代码。0x02 闭合 input 的 value 属性考点输入内容被放在input的value属性中。Payloadscriptalert(1);/script说明输入内容在属性值里直接写script不够需要先用闭合 value 属性再用闭合 input 标签然后插入 script。0x03 过滤括号使用 JS 标签模板考点这一关正则全局过滤了括号()利用 JS 标签模板特性用反引号代替括号调用函数alert1 等价于 alert(1)Payloadscriptalert1/script所以当括号被过滤时可以用反引号代替括号。注意这里不是单引号而是反引号。0x04 过滤反引号throw window.onerror 绕过考点括号和反引号都被过滤需要换一种方式执行代码。Payloadimg src οnerrοrwindow.οnerrοreval;throwalert\x281\x29;这里利用了两个点window.onerror eval把全局错误处理函数设置为eval。throw抛出字符串alert(1);其中括号用\x28、\x29十六进制表示绕过括号过滤。当throw触发错误时window.onerror会接收错误信息而它此时是eval从而执行alert(1)。0x05 注释闭合使用--!考点输入内容被包裹在 HTML 注释中且过滤了常规注释闭合符--。Payload--!scriptalert(1)/script说明HTML 注释除了常见的--还可以用--!闭合。靶场过滤了--但没有过滤--!于是可以突破注释插入脚本。0x06 换行绕过on...过滤考点正则过滤了auto、on...和等敏感内容。Payloadonmouseover”alert(1)”也可以写成 URL 编码形式onmouseover%0aalert(1)说明源码正则过滤了 auto、on... 和 。但正则默认不匹配换行符利用换行%0a把敏感词劈开服务器无法识别浏览器却能自动拼接执行尝试在onmouseover和之间插入换行符绕过正则on.*的匹配0x07 不闭合标签绕过标签过滤考点正则//?[^]/gi会过滤所有...或/...形式。Payloadsvg/οnlοadalert(1)说明正则要求匹配到才认为是一个完整标签。这里故意不写最后的从而绕过过滤。浏览器有很强的容错解析能力仍然会把svg/onloadalert(1)解析成 SVG 标签并执行onload。0x08 style 标签内闭合考点输入内容位于style标签内样式标签不能直接执行 JS。Payload/style img src οnerrοralert(1) 说明需要先闭合/style。这里在style和之间加一个空格写成/style 可以绕过对/style的精确匹配浏览器仍能识别为样式结束标签。闭合后再插入img利用onerror执行 JS。0x09 src 属性突破考点输入必须以http://www.segmentfault.com开头且会被插入到script src输入内容中。Payloadhttp://www.segmentfault.com οnerrοralert(1)说明源码要求输入以http://www.segmentfault.com开头才会插入script src输入内容需突破src属性限制,那可以尝试在合法URL后加双引号闭合src再添加onerror事件进行绕过
返回列表