Node.js中GetObjectProperty的一個(gè)小trick

起因是HackTM中一道Node.js題(Draw with us),全文沒有一點(diǎn)攻擊性的東西,也不是漏洞詳情

其中有一步黑名單檢查

function checkRights(arr) {
  let blacklist = ["p", "n", "port"];
  for (let i = 0; i < arr.length; i++) {
    const element = arr[i];
    if (blacklist.includes(element)) {
      return false;
    }
  }
  return true;
}

而最終需要的object中必須要有n,試了好久沒成功,5am3師傅直接把題秒了,tql。發(fā)現(xiàn)是用arr[["n"]],來繞過黑名單,去瀏覽器里試了下,woc,還真可以

image

上班中午午休的時(shí)候(強(qiáng)調(diào):沒有摸魚)去探究了下為什么,首先在MDN上找到了這樣的描述

請(qǐng)注意,方括號(hào)中的所有鍵都將轉(zhuǎn)換為字符串類型,因?yàn)镴avaScript中的對(duì)象只能使用String類型作為鍵類型。 例如,在上面的代碼中,當(dāng)將鍵obj添加到myObj時(shí),JavaScript將調(diào)用obj.toString()方法,并將此結(jié)果字符串用作新鍵。

(全文完

探究源碼

一般來說是全文完的,但是為了探究其原理,就去調(diào)一下源碼,這里調(diào)的是v8

首先是獲取object屬性

getobjectproperty

38行的LookupIterator::PropertyOrElement傳入了key,跟進(jìn)該函數(shù)

propertyorelement

將key傳入Object::ToName中,繼續(xù)跟進(jìn)

toname

IsName的作用為

  /**
   * Returns true if this value is a symbol or a string.
   */
  bool IsName() const;

所以,不是string類型就會(huì)進(jìn)入ConvertToName

converttoname

調(diào)用了tostring,接下來的獲取值的過程就不繼續(xù)下去了,真·全文完

REF

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Working_with_Objects

https://github.com/v8/v8

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文純屬原創(chuàng)? 如有雷同? 純屬抄襲? 不甚榮幸! 歡迎轉(zhuǎn)載! 原文收錄在【我的GitHub博客】,覺得本文...
    微醺歲月閱讀 2,160評(píng)論 2 11
  • 概述 JavaScript 原生提供Object對(duì)象。JavaScript 的所有其他對(duì)象都繼承自O(shè)bject對(duì)象...
    oWSQo閱讀 288評(píng)論 0 1
  • (以下內(nèi)容,參考自阮一峰e(cuò)s5) console.log(對(duì)象)時(shí),頁面彈出的就是[object,Object] ...
    黑色的五葉草閱讀 246評(píng)論 0 0
  • 函數(shù)和對(duì)象 1、函數(shù) 1.1 函數(shù)概述 函數(shù)對(duì)于任何一門語言來說都是核心的概念。通過函數(shù)可以封裝任意多條語句,而且...
    道無虛閱讀 4,961評(píng)論 0 5
  • 1、瀏覽器內(nèi)核-2、css與js引入方式 1、瀏覽器內(nèi)核 我們把瀏覽器中識(shí)別代碼繪制頁面的東西稱之為瀏覽器的內(nèi)核或...
    萌妹撒閱讀 859評(píng)論 0 1

友情鏈接更多精彩內(nèi)容