对于信息泄漏,我们将在 RegExp.lastParen 中使用这个错误。要了解这个错误,让我们首先仔细看看 jscript!...但是,如果 RegExp.lastParen 被调用并且有超过 10 个捕获组,RegExpFncObj::LastParen 会很乐意使用捕获组的数量作为缓冲区的索引,从而导致越界读取。...这是一个 PoC: var r= new RegExp(Array(100).join('()')); ''.search(r); 警报(RegExp.lastParen); 2 个索引(我们称它们为...通过将 RegExp.input 设置为整数值并使用由 41 组空括号组成的 RegExp,当 RegExp.lastParen 被调用时,start_index将为 0,而end_index将是我们写入
此漏洞poc如下: var r= new RegExp(Array(100).join('()')); ''.search(r); alert(RegExp.lastParen); 这个信息泄露漏洞存在于...RegExp.lastParen中,在调用任一RegExp.test、RegExp.exec或者String.search后,jscript!...由于用来保存group信息的数组大小固定为20*4(32位程序中),也就是一共有10组group信息,所以当匹配到的group数量大于10时,RegExp.lastParen过大的下标会导致取值时发生越界读操作...RegExpFncObj可以发现,如果用31个空括号组成的RegExp去搜索,同时在搜索结束后设置RegExp.input为任意整数,那么RegExp.lastParen的起始值为0而结束值则为RegExp.input...r= new RegExp(Array(32).join('()')); strarr[737].search(r); RegExp.input = x; var leak = RegExp.lastParen
RegExp 构造函数属性 通过以下属性可以提取出与exec()和test()执行的操作相关信息 input 缩写 $_ 最后搜索的字符串 lastMatch 缩写 $& 最后匹配的文本 lastParen...RegExp.rightContext); // summer console.log(RegExp.lastMatch); // short console.log(RegExp.lastParen
预定义的RegExp对象包含的静态属性:input, multiline, lastMatch,lastParen, leftContext, rightContext, 以及从$1到$9。...属性$1, ..., $9 取得匹配的子串,如果有的话 属性$_ 参考input 属性$* 参考multiline 属性$& 参考lastMatch 属性$+ 参考lastParen 属性$`...属性lastIndex 决定下一次匹配从那里开始 属性lastMatch 最后一个匹配的字符 属性lastParen 子串匹配的时候,最后一个parenthesized,如果有的话。...lastParen 最后一次加上括号的匹配字符串,如果有的话。$+是同样的意思。...RegExp属性,静态,只读 在JavaScript 1.2, NES 3.0以上版本提供 描述:因为lastParen是静态的,它不是某个个别正则式的属性,你可以使用RegExp.lastParen
var result = reg.test("great.png"); console.log(result);//true RegExp的属性 opera不支持 input,lastMatch,lastParen
toLocaleString()和toString()都是返回其字面量的形式 # RegExp构造函数属性 全名 简写 说明 input $_ 最后搜索的字符串(非标准特性) lastMatch $& 最后匹配的文本 lastParen...RegExp.rightContext); // summer console.log(RegExp.lastMatch); // short 匹配整个正则表达式的上一个字符串 console.log(RegExp.lastParen
还有几个不太常用的属性(有兼容性问题): RegExp.input 最近一次目标字符串,简写成 RegExp["$_"]RegExp.lastMatch 最近一次匹配的文本,简写成 RegExp["$&"]RegExp.lastParen...a1b2c3d4e5" console.log( RegExp.lastMatch ); console.log( RegExp["$&"] ); // => "c3" console.log( RegExp.lastParen
console.log(RegExp.rightContext); // summer console.log(RegExp.lastMatch); // short console.log(RegExp.lastParen
长属性名 短属性名 说明 input $_ 最近一次要匹配的字符串 lastMatch $& 最近一次的匹配项 lastParen $+ 最近一次匹配的捕获组 leftContext $` input字符串中...a normal string or meaningful console.log(RegExp.lastMatch); // nor console.log(RegExp.lastParen
只读 lastParen $+ 如果有的话,返回任何正则表达式查找过程中最后括的子(分组)匹配。只读 leftContext $\ 返回被查找的字符串中从字符串开始位置到最后匹配之前的位置之间的字符。
join keyCode Links LN10 LN2 LOG10E LOG2E lang language lastIndex lastIndexOf lastMatch lastModified lastParen
RegExp.input或RegExp["$_"]:最近一次要匹配的字符串 RegExp.lastMatch或RegExp["$&"]:最近一次匹配项 RegExp.lastParen或RegExp
console.log( RegExp.lastMatch ); console.log( RegExp["$&"] ); // => "c3" console.log( RegExp.lastParen
领取专属 10元无门槛券
手把手带您无忧上云