雖然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'
(沒有%
)時它會返回一個錯誤。有什麼建議,爲什麼這總是成功與%
?
那是哪種編程語言?數據庫中使用的佔位符('?')是如何訪問代碼的?這是在後臺準備好的語句,還是實際進行字符串替換的代碼。 –
我會認爲這是oracle的正常sql,並且佔位符被替換爲之後提供的值。 – user857990
這不是「常規SQL」。它是某種編程語言的一部分('query = ...'用你使用的任何語言定義了一個變量 - 它是一個**不是**有效的SQL語句)。像'?'這樣的參數標記通常用於不需要SQL注入的「準備好的語句」。 –