2010-10-20 53 views
7

通過一些Apache日誌看,我碰到下面的模式幾次(URL解碼):0x5E5B7D7E的SQL意義是什麼?

GET /foo.php?id=1 and union select 0x5E5B7D7E,0x5E5B7D7E,0x5E5B7D7E,... -- 

顯然,這是一個SQL注入嘗試。但爲什麼上面顯示的常數?我看不出它有多特別顯着,儘管它看起來很頻繁。

對於它的價值,上述常量映射到以下ASCII字符:「^[}~」或「~}[^」,如果您顛倒字節順序。十進制值爲1,583,054,206,八進制爲013626676576。該代碼似乎沒有映射到x86指令的有用序列。

谷歌搜索這個數字只是簡單地顯示了在其他網站上使用相同的SQL注入攻擊的嘗試的殘餘 - 沒有關於攻擊本身的信息。

任何人有任何見解?

+0

我的猜測是,由於sql關鍵字似乎是一個更大的語句的一部分,因爲序列以「和」開始,關鍵字後面的數字不一定是他們試圖注入的sql語句的一部分。也許他們試圖同時注入sql和非sql? – akonsu 2010-10-20 02:20:48

+0

是的,我注意到「和工會」是一個奇怪的構造,但我真正的quiestion是:爲什麼這個數字?這似乎是SQL注入攻擊中的一個常見元素。 – tylerl 2010-10-20 02:27:41

+0

它可能試圖利用特定的軟件。你的網站運行什麼樣的軟件? – mellowsoon 2010-10-20 02:36:39

回答

8

此值是唯一標識符。如果值「^[}~」出現在頁面上,那麼機器人知道你很容易受到sql注入的影響,如果出現值「0x5E5B7D7」,那麼它不會被你的sql服務器解釋。這個sql注入測試可能只有一個0x5E5B7D7E,然後繼續到它們的預定義數量。這是因爲使用聯合選擇聯合必須返回與它正被追加到的選擇相同數量的列,並且機器人必須蠻力這個值。

請注意,此測試不適用於盲目sql注入,因爲值「^[}~」將不可見。 MySQL的blind sql injection test將注入sleep(30)BENCHMARK(5000000,md5(1337))的呼叫。這會導致頁面加載幾秒鐘,從而表示這個sql代碼正在執行。