自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

無(wú)須字母構(gòu)建XSS向量

安全 應(yīng)用安全
之前我在玩一個(gè)XSS游戲的時(shí)候突然有了些想法,本著分享的原則,于是便有了這篇文章。在此,我將分享一個(gè)此前沒(méi)有接觸過(guò)的一個(gè)XSS攻擊向量。

之前我在玩一個(gè)XSS游戲的時(shí)候突然有了些想法,本著分享的原則,于是便有了這篇文章。在此,我將分享一個(gè)此前沒(méi)有接觸過(guò)的一個(gè)XSS攻擊向量。

[[152113]]

相同水平的前提下,在攻擊向量中不使用任何字母,且必須調(diào)用alert(1)。

閑話少說(shuō),看這里:

""[(!1+"")[3]+(!0+"")[2]+(''+{})[2]][(''+{})[5]+(''+{})[1]+((""[(!1+"")[3]+(!0+"")[2]+(''+{})[2]])+"")[2]+(!1+'')[3]+(!0+'')[0]+(!0+'')[1]+(!0+'')[2]+(''+{})[5]+(!0+'')[0]+(''+{})[1]+(!0+'')[1]](((!1+"")[1]+(!1+"")[2]+(!0+"")[3]+(!0+"")[1]+(!0+"")[0])+"(1)")()

真是一團(tuán)糟,我們到底做了些什么呢?接下來(lái)容我慢慢給大家道來(lái)。

分析

首先從空字符串開(kāi)始,接下來(lái)我們?cè)L問(wèn)括號(hào)而不是我們熟悉的點(diǎn)符號(hào)的屬性。

請(qǐng)注意,在接下來(lái)的一分鐘我們將構(gòu)建字符串,不會(huì)用到點(diǎn)符號(hào)構(gòu)造字符串名的對(duì)象屬性,現(xiàn)在切換到括號(hào)。

現(xiàn)在我們?cè)L問(wèn)的是什么屬性?下面這個(gè)就是“字符串”

(!1+"")[3]+(!0+"")[2]+(''+{})[2]

接下來(lái)從!1(false)開(kāi)始,將“”添加到一個(gè)non-String值中是一個(gè)快速且直接的方法,所以(!1+””)我們得到false

將字符帶入索引3中的“false”(結(jié)果切好是s),在(!0+””)[2]或者“true”[2]再次嘗試,你會(huì)得到字母u。最后將字符帶入索引2的字符串“[object Object]”中,你會(huì)得到字母b。

不使用任何字母,構(gòu)造一個(gè)字符串來(lái)訪問(wèn)空字符串對(duì)象的“sub”屬性,然而sub不僅僅是一個(gè)屬性,它還是一個(gè)函數(shù)!

此時(shí)此刻,你可能會(huì)認(rèn)為我接下來(lái)會(huì)通過(guò)調(diào)用String.sub函數(shù)破壞過(guò)濾?;蛟S這么做也行,但是我選擇更加有深度的做法,函數(shù)有什么內(nèi)置屬性?如何構(gòu)造函數(shù)?

如果你打開(kāi)一個(gè)JavaScript控制臺(tái),鍵入“”[“sub”][“constructor”],你看到了什么?為什么得到了Function()函數(shù)!似乎我們有事情干了…

給你點(diǎn)提示:這其中有n

((""[(!1+"")[3]+(!0+"")[2]+(''+{})[2]])+"")[2]

我們有熟悉的“”[“sub”]:

((""["sub"])+"")[2]

向其中增加“”,得到function sub() { [native code] }。將字符帶入索引2得到字母n

總結(jié)

我們現(xiàn)在得到了相當(dāng)于Function()的“”[“sub”][“constructor”],調(diào)用它我們就可以定義一個(gè)函數(shù)了。當(dāng)我們嘗試調(diào)用alert(1)時(shí),就需要連接更多的“true”和“false”來(lái)構(gòu)建alert字符串,其后在加上+”(1)”。

現(xiàn)在我們調(diào)用Function(“alert(1)”),大功告成,現(xiàn)在只需一個(gè)調(diào)用,返回一個(gè)匿名函數(shù)就可以實(shí)現(xiàn)彈出。

// empty string""// ["sub"][(!1+"")[3]+(!0+"")[2]+(''+{})[2]]// ["constructor"][(''+{})[5]+(''+{})[1]+((""[(!1+"")[3]+(!0+"")[2]+(''+{})[2]])+"")[2]+(!1+'')[3]+(!0+'')[0]+(!0+'')[1]+(!0+'')[2]+(''+{})[5]+(!0+'')[0]+(''+{})[1]+(!0+'')[1]]// ("alert(1)")(((!1+"")[1]+(!1+"")[2]+(!0+"")[3]+(!0+"")[1]+(!0+"")[0])+"(1)")// call anonymous function returned by Function()()

本文最開(kāi)始的Function(“alert(1)”)()確實(shí)十分混亂,不使用任何可識(shí)別的字符串確實(shí)很難辨識(shí)。你可以在地址欄鍵入“javascript:”復(fù)制粘貼上面的代碼點(diǎn)擊回車鍵進(jìn)行測(cè)試。

我喜歡你能夠喜歡JavaScript語(yǔ)言中這種十分隱晦的表達(dá)方式,Happy hacking!

責(zé)任編輯:藍(lán)雨淚 來(lái)源: FreeBuf
相關(guān)推薦

2016-09-29 14:03:06

2013-04-07 10:11:27

2009-02-06 09:50:00

路由器網(wǎng)段

2024-03-06 14:48:54

云原生

2012-10-31 09:26:48

Android 4.2

2016-09-02 09:14:26

2022-01-12 09:46:49

路由器天線網(wǎng)絡(luò)技術(shù)

2024-04-24 10:44:53

語(yǔ)言模型自然語(yǔ)言處理人工智能

2010-08-24 16:21:04

2022-02-08 14:05:08

數(shù)字法幣數(shù)字人民幣銀行支付

2017-09-19 15:45:39

2015-11-10 11:00:58

2010-09-13 10:14:30

2013-07-26 14:59:13

2017-05-31 14:55:19

2013-11-14 10:27:54

2017-05-16 14:25:28

2011-09-15 10:57:05

愛(ài)普生噴墨打印機(jī)

2013-10-14 14:55:44

編程開(kāi)發(fā)工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)