国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

探秘JavaScript中的六個字符

來源:懂視網 責編:小采 時間:2020-11-27 20:31:49
文檔

探秘JavaScript中的六個字符

探秘JavaScript中的六個字符:JavaScript 是一個奇怪而有趣的語言,我們可以寫一些瘋狂卻仍然有效的代碼。它試圖幫助我們把事情轉換到基于我們如何對待他們的特定類型。如果我們添加一個字符串,JavaScript會假定我們希望為文本形式表示,所以將它轉換為一個字符串。如果我們添加一個正負前
推薦度:
導讀探秘JavaScript中的六個字符:JavaScript 是一個奇怪而有趣的語言,我們可以寫一些瘋狂卻仍然有效的代碼。它試圖幫助我們把事情轉換到基于我們如何對待他們的特定類型。如果我們添加一個字符串,JavaScript會假定我們希望為文本形式表示,所以將它轉換為一個字符串。如果我們添加一個正負前
JavaScript 是一個奇怪而有趣的語言,我們可以寫一些瘋狂卻仍然有效的代碼。它試圖幫助我們把事情轉換到基于我們如何對待他們的特定類型。

如果我們添加一個字符串,JavaScript會假定我們希望為文本形式表示,所以將它轉換為一個字符串。如果我們添加一個正負前綴符號,JavaScript會假定我們希望為數值形式表示,如果可能的話,對我們來說并將字符串轉換為一個數字。如果我們添加一個否定符號,JavaScript會將將字符串轉換為一個布爾值。

我們可以使用Javascript中[,],(,),! and +這六個符號寫一些神奇的代碼。如果你現在不是在手機,你可以打開瀏覽器的控制臺,你可以將任何代碼示例粘貼到控制臺,并且代碼值為true。

讓我們從最基本的開始,要記住一些黃金規則:

!后面跟的字符會被轉換成布爾值

+后面跟的字符會被轉換成數值

[]后面跟的字符會被轉換成字符串

來看下面的例子:

![] === false
+[] === 0
[]+[] === ""

另一件事你應該知道的是,它可以從字符串使用方括號檢索特定的字母,像這樣:

"hello"[0] === "h"

還記得可以使多個數字號碼通過添加字符串表示在一起,然后把整個表達式轉換成一個數字:

+("1" + "1") === 11

我們們繼續把一些東西結合在一起得到字母a

![] === false
![]+[] === "false"
+!![] === 1
------------------------
(![]+[])[+!![]] === "a" // same as "false"[1]

舉一反三!

我們可以通過true 和 false得到相似的字母a,e,f,l,r,s,t,u,那么我們可以從其他地方得到的字母嗎?

我們可以通過一些特別的式子如[][[]]得到undefined,利用我們上面講到的黃金法則得到另外的字母d,i 和 n。

`[][[]] + [] === "undefined"`

到目前為止,利用我們已經獲得的所有字母,我們可以拼fill, filter 和 find。當然也有一些其他的單詞,我們也可以拼寫,但這些單詞最重要的是,他們都是數組的方法。這意味著他們是數組對象的一部分,可以直接調用數組實例,如:[2,1].sort()。

現在,了解JavaScript的另一件重要的特性是一個對象的屬性可以通過點符號.或方括號[]訪問。上述數組方法是數組對象本身的屬性,我們可以使用方括號代替點符號調用這些方法。

所以[2,1]["sort"]() 等效于 [2,1].sort().

我們繼續看看,當我們試圖使用一個數組的方法會發生什么,我們可以使用到目前為止我們拼寫的但沒有調用的字母。

[]["fill"]

這會得到function fill() { [native code] },我們可以把這個方法頭作為一個字符串再次使用我們的黃金法則:

[]["fill"]+[] === "function fill() { [native code] }"

所以現在我們又得到其他的字符:c,o,v,(,),{,[,],}。

隨著我們新得到的c和o,我們現在可以形成constructor這個單詞。構造函數是一個方法,所有JS對象僅返回自己的構造函數。

到目前為止我們已經處理的對象,我們可以得到它用字符串表示的構造器函數:

true["constructor"] + [] === "function Boolean() { [native code] }" 
0["constructor"] + [] === "function Number() { [native code] }" 
""["constructor"] + [] === "function String() { [native code] }"
[]["constructor"] + [] === "function Array() { [native code] }"
({})["constructor"] + [] === "function Object() { [native code] }"

通過這些式子,我們可以將下面的字符加入到我們的庫中:

1.png

現在我們可以構造一個我們可以使用方括號的函數"toString"`,我們可以這樣調用:

(10)["toString"]() === "10"

使用我們的黃金法則,我們已經可以將任何我們想要轉換成一個字符串,但是上面這個式子怎么用呢?

好吧,我告訴你,Number類型的toString方法有一個稱為radix(“基數”)的秘密的論點。它可以將數值在轉換為一個字符串之前先經過基數換算,像這樣:

(12)["toString"](10) === "12" // 十進制
(12)["toString"](2) === "1100" // 二進制
(12)["toString"](8) === "14" // 八進制
(12)["toString"](16) === "c" // 十六進制

但是為什么基數只寫到16?最大值是36,包括所有的字符0-9 和 a-z,所以現在我們可以得到任何我們想要的字母數字:

(10)["toString"](36) === "a"
(35)["toString"](36) === "z"

太棒了!但是其它符號如標點符號和大寫字母呢?我們接著深入探索。

這取決于你的JS執行時,它可能會或可能不會訪問特定的預定義的對象或數據。如果你在瀏覽器中運行它,那么你可以訪問一些存在的HTML包裝器方法。

例如,bold是一個包裝在<>標簽中的字符串方法。

"test"["bold"]() === "test"

通過這個我們得到<>和/兩個字符。

你可能聽說過escape方法,它主要將字符串轉換為一個URI友好的格式,可以讓簡單的瀏覽器解釋。如果我們傳遞一個空格字符,我們得到的"%20"。

這里有一個工具可以自動將每個字符自動轉換。 工具地址:http://www.jsfuck.com/ 源代碼地址:https://raw.githubusercontent.com/aemkei/jsfuck/master/jsfuck.js

為什么這幾個字符有用?

它不是易趣網做的一些不好的事情,不久前允許賣家將執行JS在頁面中使用只能使用這些字符,但它是一個相當罕見的攻擊向量。有些人說混淆,但事實上,有更好的方法混淆。

最后,希望你會喜歡本次探秘之旅。

資源:

https://en.wikipedia.org/wiki/JSFuck

https://esolangs.org/wiki/JSFuck

http://patriciopalladino.com/blog/2012/08/09/non-alphanumeric-javascript.html

https://raw.githubusercontent.com/aemkei/jsfuck/master/jsfuck.js

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

探秘JavaScript中的六個字符

探秘JavaScript中的六個字符:JavaScript 是一個奇怪而有趣的語言,我們可以寫一些瘋狂卻仍然有效的代碼。它試圖幫助我們把事情轉換到基于我們如何對待他們的特定類型。如果我們添加一個字符串,JavaScript會假定我們希望為文本形式表示,所以將它轉換為一個字符串。如果我們添加一個正負前
推薦度:
標簽: js javascript 字符
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产免费不卡 | 精品久久久久中文字幕日本 | 国产区在线看 | 国产国语在线播放视频 | 日韩欧美一区二区在线观看 | 欧美成人精品高清在线播放 | 久久一级毛片 | 国产成人精品久久一区二区三区 | 国产 日韩 欧美 高清 | 337p日本欧洲亚洲大胆精品 | 国内一区二区三区精品视频 | 国产毛片在线看 | 日韩欧美一区在线观看 | 国产视频一区二区三区四区 | 在线观看亚洲欧美 | 国内精品免费 | 日韩另类| 国产ssss在线观看极品 | 91精品国产91久久久久福利 | 欧美视频日韩视频 | 亚洲精品自产拍在线观看app | 欧美综合自拍亚洲综合 | 免费国产高清视频 | 久久亚洲精品国产精品777777 | 国产高清一区二区 | 三男一女的伦交动态图 | 日韩免费一区 | 天天做夜夜做久久做狠狠 | 在线视频你懂 | 日韩国产另类 | 中文 字幕 高清 在线 | 中日韩欧美在线观看 | 日韩影片在线观看 | 欧美视频日韩视频 | 爱色电影 | 亚洲日本一区二区三区高清在线 | 国产对白在线播放九色 | 日韩大片免费观看视频播放 | 国产精品第 | 欧美第一区 | 国产在线精品观看 |