以浏览器解析机制来理解XSS载荷的编码转换

以浏览器解析机制来理解XSS载荷的编码转换

0x00 前言

之前在学习XSS的时候总感觉不是很系统,许多技巧背后原理都没有理解,光是会用罢了,如部分绕过编码技巧。
今天打算花时间来补补基础。

0x00 基础知识

HTML基础

常见的字符实体

部分具有特定名称的字符实体
而对于其他没有特定名称的实体来说:

  • 十进制:对应符号的Ascii的值前加上&#,后以;结尾
  • 十六进制:对应符号的Ascii的值换算成16进制前加上&#x,后以;结尾

注意:字符实体解码后得到的值为字符串型,HTML解析器只将其当做字符串文本处理。

阅读更多
关于我学XSS躺过的那些坑

关于我学XSS躺过的那些坑

XSS字符编码

在学习编码绕过时由于数量多,类型相似,不太容易记得住,记得全,故做此记录。

0x01 Html标签属性中执行

简单了解:

Html标签属性中的XSS问题多属于javascript伪协议
常见的属性有:

  • src
  • lowsrc
  • dynsrc
  • url
  • href
  • action
  • onload
  • onunload
  • onmouseover
  • onerror
  • 各种on开头的事件

PS:此处可不加括号,如onclick=javascript:alert(1),各类教程里常见的<img src=javascript:alert(1)></img>Chrome、Firfox已失效,IE测试成功。

在Html标签中,许多标签具有执行javascript的权利,当服务器存在过滤时,我们可以尝试通过以下编码方法绕过:

  • 8/10/16进制转换([.][&#][&#x])
  • 利用javascript:String.fromCharCode(xx,xx,xx......) [xx为编码的字符串的ASCII码]
  • JScript Encode [IE] JS fuck等
  • data:text/html;bbase64,xxxxxxx [IE下无效,Chorme、Firefox下均属于空白域,无法获取信息,不过可用作CVE攻击]
阅读更多
使用Django简单编写一个XSS平台
前端Hack之XSS攻击个人学习笔记

前端Hack之XSS攻击个人学习笔记

简单概述

 此篇系本人两周来学习XSS的一份个人总结,实质上应该是一份笔记,方便自己日后重新回来复习,文中涉及到的文章我都会在末尾尽可能地添加上,此次总结是我在学习过程中所写,如有任何错误,敬请各位读者斧正。其中有许多内容属于相关书籍、文章的部分摘取,如有侵权,请联系我修改。(asp-php#foxmail.com)

1) 什么是XSS?

   XSS(Cross-Site Script,跨站脚本)是由于web应用程序对用户的输入过滤不足而产生的一种漏洞。攻击者可以利用网站漏洞把恶意的脚本代码注入到网页之中,当其他用户浏览这些带有恶意代码的网页时就会执行其中的恶意代码,对受害者产生各种攻击。
       如果对以上描述还不是很了解的话,可以参考百度百科
       在余弦大大xisigr大大的书籍《Web前端安全技术揭秘》第三章中这样说道:

跨站脚本的重点不在“跨站”上,而应该在“脚本”上…因为这个“跨”实际上属于浏览器的特性,而不是缺陷,造成“跨”的假象是因为绝大多数的XSS攻击都会采用嵌入一段远程或者说第三方域上的脚本资源。

阅读更多