1 回答

TA貢獻(xiàn)1876條經(jīng)驗 獲得超6個贊
首先,為了解決代碼語法本身的問題,PHP 允許您動態(tài)創(chuàng)建變量名稱。
假設(shè)你有一個變量:
$test = 123;
您可以動態(tài)創(chuàng)建對此變量的引用,如下所示:
echo ${'test'}; // Prints '123'
你為什么想做這個?上面的例子毫無意義,但是假設(shè)您需要在運行時動態(tài)運行一些變量名稱:
$var1 = 'A';
$var2 = 'B';
$var3 = 'C';
for ($i = 1; $i <= 3; $i++) {
echo ${'var' . $i};
}
// Prints 'ABC'
既然我們知道了語法的含義,那么它到底\x47\x4c\x4fB\x41\x4c\x53意味著什么呢?
用于\x轉(zhuǎn)義十六進(jìn)制字符序列。簡單來說,您顯示的字符串是一堆字符,有人將其表示為十六進(jìn)制,而不是您習(xí)慣看到的人類可讀的 ASCII 字符。
如果我們?nèi)サ鬨x逃逸部分,我們就剩下:
474c4fB414c53
據(jù)我所知,B這里并不是十六進(jìn)制的。這給我們留下了:
474c4f 414c53
翻譯過來就是:
GLO ALS
如果我們替換B我們得到:
GLOBALS
如果我們將其添加回動態(tài)變量引用并再次查看代碼,我們會得到:
$GLOBALS['v9800']
這很有趣,因為$GLOBALS是 PHP 中可用的特殊數(shù)組,它可以訪問全局范圍內(nèi)的所有變量。所以本質(zhì)上,您的代碼正在嘗試訪問一個名為 的全局變量$v9800。
您必須決定這對您的應(yīng)用程序意味著什么,但此代碼可能是可疑的。可能有人故意使用這種神秘的方法來偽裝他們的代碼,以嘗試訪問全局變量。
- 1 回答
- 0 關(guān)注
- 127 瀏覽
添加回答
舉報