2013-08-05 58 views
1

雖然pentesting網站(是的,合法),SQL注入彈出,但我不明白如何使用它當前。查詢字符串看起來像這樣,將插入點在第一_值後:Oracle數據庫 - 奇怪的SQL注入

query = 'SELECT item.a 
      FROM favitem item 
      WHERE (item.a =?) AND (item.b=?)', values = [123456789_, 987654321] 

簡單

, 1] UNION SELECT banner FROM v$version WHERE banner LIKE 'Oracle%'; -- 

不返回任何值,但指出它是全成。當它包含'%'時,即使在隨機字符串中,它也總是成功的,它們根本不可能匹配。當它聲明LIKE 'Oracle'(沒有%)時它會返回一個錯誤。有什麼建議,爲什麼這總是成功與%

+1

那是哪種編程語言?數據庫中使用的佔位符('?')是如何訪問代碼的?這是在後臺準備好的語句,還是實際進行字符串替換的代碼。 –

+0

我會認爲這是oracle的正常sql,並且佔位符被替換爲之後提供的值。 – user857990

+0

這不是「常規SQL」。它是某種編程語言的一部分('query = ...'用你使用的任何語言定義了一個變量 - 它是一個**不是**有效的SQL語句)。像'?'這樣的參數標記通常用於不需要SQL注入的「準備好的語句」。 –

回答

2

尋找注射是一回事,但要求社區爲你寫一個漏洞 - 是另一回事。

所以,如果你找到了它 - 只是報告。這就是測試的目的。

+0

最好給客戶提供sqli的一些數據,但這並不是我要求的,但我正在尋找一個解釋,因爲'%'是必要的,爲什麼它似乎反應良好,即使沒有這樣的入口。 – user857990