这里说的正则表达式优化,主要是针对目前常用的NFA模式正则表达式,详细可以参考:正则表达式匹配解析过程探讨分析(正则表达式匹配原理)。从上面例子,我们可以推断出,影响NFA类正则表达式(常见语言:GNU Emacs,Java,ergp,less,more,.NET语言, PCRE library,Perl,PHP,Python,Ruby,sed,vi )其实主要是它的“回溯”,减少“回溯”次数(减少循环查找同一个字符次数),是提高性能的主要方法。 我们来看个例子: 源字符串:<script type="text/javascript">adsfadfsdasfsdafdsfsadfsa</script> 匹配要求,匹配<script….>….</script>标签里面所有内容,包括改标签 常见写法(1),因为<script后面...
阅读全文
最近比较忙,电脑一直有问题,还没有修理好。本来以前买个电脑才3000来块,现在刚好过保几个月,然后修下说要700多,如果换配件要1000多。这个电脑现在买个新二手,应该也就千把块,够黑了。呵呵,不说这么些了。今天我们继续分析京东商城Jsonp使用漏洞之二,未对资源访问进行授权。 对于Jsonp漏洞,这里我就不细说了,详细可以看:Jsonp常见安全漏洞分析(京东商城Jsonp 漏洞分析) ,从上面文章,我们知道jsonp是可以跨域名调用的。这个漏洞是:没有授权网站,可以直接在该站点访问jsonp接口资源。可能有朋友会问题:“这个漏洞有什么影响呢?”,一般我们常见有: 1.对于存在漏洞的网站来说:jsonp资源给外部调用,浪费接口资源,也给调用带...
阅读全文
上一节,我们分析了。选择不同编码可能会导致程序带来本身潜在的漏洞。这次我们以GBK编码为例,看看怎么样通过该编码注入到系统中。目前很多开源系统都存在类似的注入问题。我们先来,从一个Demo开始! GBK字符集漏洞注入原理 <?php
$u=isset($_GET['u'])? $_GET['u']:'';
$u=addslashes($u);
$sql = "select * from user where user='$u'";
以上是我们写的一个测试例子(GBK编码),现在很多开源系统,比较少的进行统一参数过滤,有时候为了防止注入,就直接对参数进行转义处理。我们看看,这样一个例子,我们怎么样注入进系统!
步骤
备注
1.传入值%D5%27 or 1...
阅读全文
很多时候,一个web站点,选择什么样的字符编码,我们不会太过在意的。象中文网站,我们一般用gb2312,gbk,gb18030,也可以用utf-8。但是,可能我们不知道,选择不同编码,可能因此导致程序本身设计缺陷。 多字节编码由来 我们先来看看最常用的,最小字符集是ascii,对应的二级制可以表示为:00-7F 编码 。它也是我们计算机使用最早通用的字符集。前期几乎可以表示所有英文字符。后来,更多使用计算机国家加入后,我们就想在计算机中表示中文字符。我们知道常见中文就有7000多个字符。ascii码就只有128字符,只有0-127编码位置,远远不够用了。因此,我们就开始制作更大字符集,并且保证兼容ascii编码。要支持更多字符,选择更大字符集。我们只能...
阅读全文
继续我们jsonp 安全使用分享吧!上一篇文章我们提到jsonp使用,常见2种类型漏洞出现!详细可以看看:Jsonp常见安全漏洞分析 ,今天我们来结合实例分析下该漏洞的测试、及利用过程吧!题外话为什么我选择是京东商城来分析它的jsonp 漏洞呢,其实主要原因最近6.18一直在做活动,我也买了不少便宜东西。现在该商城越做越好了。它系统也非常庞大,速度性能也很好。当时在购物时候,只是想看看,它的系统分离设计方面。通过分析页面http请求,发现有很多jsonp调用(也许跟换域名有关系,2种域名都可以访问,中间用jsonp交换数据),于是就看看,jsonp常见2种安全方面,有没有做处理。结果一测试。发现完全没有做任何处理,几乎是完完全全暴露出来。个...
阅读全文
JSONP(JSON with Padding)是资料格式 JSON 的一种“使用模式”,可以让网页从别的网域要资料。这个解释来自于互联网上面的答案。jsonp只是 一种使用json模式,之所以能够很广泛使用。主要用它来解决跨域访问问题。可以方便跨域名传输数据。一些是一个jsonp的例子。但是,正确的使用jsonp是至关重要的,用得不好。将带来重要资料把超范围访问,还会带来各自xss漏洞。JSONP跨域请求例子传统的ajax ,往往是 XMLHttpRequest ,读取一个接口,返回类似: {"Name": "小明", "Rank": 7} json值。一般我们都采用xmlhttprequest方法通过状态判断执行请求是否完毕。JSONP的使用模式里,该URL回传的是由自定义传入函数名,动态生成JSON作为该函数入参,这就...
阅读全文
前面我们知道正则表达式有很多元字符表示匹配次数(量词),都是可以重复匹配前面出现的单个字符次数。有时候,我们可能需要匹配一组多个字符一起出现的次数。这个时候,我们需要分组了。就是用小括号来括起这些字符,指定子表达式(也叫做分组)。然后你就可以指定这个子表达式的重复次数了,你也可以对子表达式进行其它一些操作。这个时候,可以把括号中一组字符,看作一个整体了。 分组模式举例说明 如:查找字符串中,连续出现多个win字符串的字符。可以这样完成
<?php
$str = "this is win winwindows!";
preg_match_all("/(win)+/",$str,$marr);
var_dump($marr);
不用分组模式...
阅读全文
php header函数功能强大,可以给用户发送各种header头信息,只要header头里面能够发送的内容,都可以通过header函数来完成。如发送302跳转,设置cookie,发送401认证,发现last-modify等等! HTTP/1.1 specification for more information on HTTP headers,都可以用该函数完成。总之一句话,任何服务区response应答的头信息几乎都可以用它来发送。如:这里我们经常用header发送302跳转,会发现一个问题。在走查代码时候,遇到很多同人会有类似操作代码,如:<?phpheader("Content-type: text/html; charset=utf-8");//判断用户是否授权if('用户未授权'){ header("location:forbidden.php");}///下面是进行摸个记录操作//删除条记录,或者修改...
阅读全文
断言(Assertions)在正则表达式概念里面难理解,它通常指的是在目标字符串的当前匹配位置进行的一种测试但这种测试并不占用目标字符串,也即不会移动模式在目标字符串中的当前匹配位置。详细可以看看,正则表达式匹配解析过程探讨分析(正则表达式匹配原理),里面提到“零宽度“很多元字符,只是对特殊位置进行匹配,它们可以理解为断言。 断言元字符 常见断言元字符有: \b, \B, \A, \Z, \z, ^ ,$ 它们只是表示特殊位置,各自作用如有字符串AB,带位置表示为:0A1B2 元字符 意义(以上面带位置字符串说明) ^ 行首,字符串首 表示位置0 $ 行尾,字符串尾部,表示位置2 \b 字分界线,可以表示:0,2位置 \B 非字分界线,可以表示1位置 ...
阅读全文
已经有多篇关于正则表达式介绍的文章,随着我们越来越多使用正则表达式,想对性能做优化、减少我们正则表达式书写匹配Bug。我们不得不进一步深入了解正则表达式执行过程了。下面我们一起学习,分析下正则表达式执行过程。我们会用regexbuddy测试工具分解执行过程,具体工具使用,可以看:正则表达式性能测试工具推荐、优化工具推荐(regexbuddy推荐)。要了解正则表达式解析过程前,我们先来熟悉几个概念。 常见正则表达式引擎 引擎决定了正则表达式匹配方法及内部搜索过程,了解它至关重要的。目前主要流行引擎有:DFA,NFA两种引擎,我们比较区分下。 引擎 区别点 DFADeterministic finite automaton 确定型有穷自动机 DFA引擎它们不要求...
阅读全文