<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題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
        當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

        探秘JavaScript中的六個(gè)字符

        來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 20:31:49
        文檔

        探秘JavaScript中的六個(gè)字符

        探秘JavaScript中的六個(gè)字符:JavaScript 是一個(gè)奇怪而有趣的語言,我們可以寫一些瘋狂卻仍然有效的代碼。它試圖幫助我們把事情轉(zhuǎn)換到基于我們?nèi)绾螌Υ麄兊奶囟愋汀H绻覀兲砑右粋€(gè)字符串,JavaScript會(huì)假定我們希望為文本形式表示,所以將它轉(zhuǎn)換為一個(gè)字符串。如果我們添加一個(gè)正負(fù)前
        推薦度:
        導(dǎo)讀探秘JavaScript中的六個(gè)字符:JavaScript 是一個(gè)奇怪而有趣的語言,我們可以寫一些瘋狂卻仍然有效的代碼。它試圖幫助我們把事情轉(zhuǎn)換到基于我們?nèi)绾螌Υ麄兊奶囟愋汀H绻覀兲砑右粋€(gè)字符串,JavaScript會(huì)假定我們希望為文本形式表示,所以將它轉(zhuǎn)換為一個(gè)字符串。如果我們添加一個(gè)正負(fù)前
        JavaScript 是一個(gè)奇怪而有趣的語言,我們可以寫一些瘋狂卻仍然有效的代碼。它試圖幫助我們把事情轉(zhuǎn)換到基于我們?nèi)绾螌Υ麄兊奶囟愋汀?/p>

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

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

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

        !后面跟的字符會(huì)被轉(zhuǎn)換成布爾值

        +后面跟的字符會(huì)被轉(zhuǎn)換成數(shù)值

        []后面跟的字符會(huì)被轉(zhuǎn)換成字符串

        來看下面的例子:

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

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

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

        還記得可以使多個(gè)數(shù)字號碼通過添加字符串表示在一起,然后把整個(gè)表達(dá)式轉(zhuǎn)換成一個(gè)數(shù)字:

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

        我們們繼續(xù)把一些東西結(jié)合在一起得到字母a

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

        舉一反三!

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

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

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

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

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

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

        我們繼續(xù)看看,當(dāng)我們試圖使用一個(gè)數(shù)組的方法會(huì)發(fā)生什么,我們可以使用到目前為止我們拼寫的但沒有調(diào)用的字母。

        []["fill"]

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

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

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

        隨著我們新得到的c和o,我們現(xiàn)在可以形成constructor這個(gè)單詞。構(gòu)造函數(shù)是一個(gè)方法,所有JS對象僅返回自己的構(gòu)造函數(shù)。

        到目前為止我們已經(jīng)處理的對象,我們可以得到它用字符串表示的構(gòu)造器函數(shù):

        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

        現(xiàn)在我們可以構(gòu)造一個(gè)我們可以使用方括號的函數(shù)"toString"`,我們可以這樣調(diào)用:

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

        使用我們的黃金法則,我們已經(jīng)可以將任何我們想要轉(zhuǎn)換成一個(gè)字符串,但是上面這個(gè)式子怎么用呢?

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

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

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

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

        太棒了!但是其它符號如標(biāo)點(diǎn)符號和大寫字母呢?我們接著深入探索。

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

        例如,bold是一個(gè)包裝在<>標(biāo)簽中的字符串方法。

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

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

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

        這里有一個(gè)工具可以自動(dòng)將每個(gè)字符自動(dòng)轉(zhuǎn)換。 工具地址:http://www.jsfuck.com/ 源代碼地址:https://raw.githubusercontent.com/aemkei/jsfuck/master/jsfuck.js

        為什么這幾個(gè)字符有用?

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

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

        資源:

        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

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        探秘JavaScript中的六個(gè)字符

        探秘JavaScript中的六個(gè)字符:JavaScript 是一個(gè)奇怪而有趣的語言,我們可以寫一些瘋狂卻仍然有效的代碼。它試圖幫助我們把事情轉(zhuǎn)換到基于我們?nèi)绾螌Υ麄兊奶囟愋汀H绻覀兲砑右粋€(gè)字符串,JavaScript會(huì)假定我們希望為文本形式表示,所以將它轉(zhuǎn)換為一個(gè)字符串。如果我們添加一個(gè)正負(fù)前
        推薦度:
        標(biāo)簽: js javascript 字符
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚州免费一级毛片| 亚洲电影免费观看| 2022中文字字幕久亚洲| 免费视频成人国产精品网站| 免费一级一片一毛片| 日韩在线视频线视频免费网站| 亚洲高清无码综合性爱视频| 成人无码精品1区2区3区免费看 | 国内一级一级毛片a免费| 亚洲精品亚洲人成在线播放| 精品久久久久国产免费| 亚洲精品中文字幕| 亚洲欧洲自拍拍偷精品 美利坚| eeuss影院免费92242部| 亚洲精品乱码久久久久久按摩 | 免费a级毛片网站| 国产精品免费久久久久影院| 国产精品亚洲A∨天堂不卡| 99精品视频在线观看免费专区| 亚洲成人福利网站| 岛国片在线免费观看| 一级毛片免费播放男男| 亚洲AV无码国产丝袜在线观看| 最近免费mv在线电影| 亚洲欧洲无卡二区视頻| 亚洲男人天堂2020| 在线看片免费人成视久网| 亚洲人成77777在线观看网| 无码国产亚洲日韩国精品视频一区二区三区 | 日本特黄特色AAA大片免费| 国产亚洲综合一区柠檬导航| 国产免费不卡视频| 老妇激情毛片免费| 久久亚洲AV无码精品色午夜麻豆| 女人张腿给男人桶视频免费版| 久久久精品视频免费观看 | 亚洲毛片无码专区亚洲乱| 国产在线观看www鲁啊鲁免费| 国内永久免费crm系统z在线| 亚洲国产系列一区二区三区| 国产成人精品日本亚洲专区|