SQL注入

2021-07-16 07:22:42 字數 913 閱讀 6567

sql注入基本原理:

1)對於非數字字元(串),如果沒有加引號,資料庫預設的把它當做乙個資料庫字段處理。

select     *      from    sql_injection     where   id=age;

2)注意一些常用的sql注釋符,比如:雙橫槓(--)、井字元(#)。

3)理解邏輯運算or的分塊作用。and短路(一旦出錯,後面的條件將不再考慮),or(一旦成功,後面的條件將不再考慮)

select    *       from    sql_injection      where  id='tt'   or  1=1;//成功

對於mysql來說,數值型別、字元型別都可以用引號引起來;但是對於字元型別,如果沒有用引號引起來,資料庫會把它當做乙個資料庫字段處理。參考第一條

select    *       from    sql_injection      where  id=tt    or  1=1;這條語句的執行結果有如下幾種情況:

1)錯誤:sql_injection 表不存在tt欄位,一般來說 or運算子兩邊只要有乙個為真,整體就為真,但是這條

error 1054 (42s22): unknown column 'tt' in 'where clause'

2)正確1,輸出一或多條記錄。sql_injection 表存在tt欄位,且存在一條或多條記錄,且滿足record.id=record=tt;

3)正確2,輸出該資料表所有記錄。sql_injection 表存在tt欄位,但是不存在滿足record.id=record=tt的記錄record;因此,根據右邊的條件(1=1)判斷

4.將各類敏感字元比如2)中的注釋符,3)中的邏輯運算子等等進行轉碼**為16進製制、unicode碼等等)

5.構造錯誤,試探資料庫字段。

6.了解各類資料庫報錯資訊。

SQL注入(三) sql注入 bugku

原理 mysql 在使用 gbk 編碼的時候,會認為兩個字元為乙個漢字,例如 aa 5c 就是乙個 漢字 前乙個 ascii碼大於 128 才能到漢字的範圍 我們在過濾 的時候,往往利用的思 路是將 轉換為 換的函式或者思路會在每一關遇到的時候介紹 因此我們在此想辦法將 前面新增的 除掉,一般有兩種...

SQL注入 報錯注入

乙個帶get引數的 並且不從資料庫返回資料,但存在報錯資訊 檢視字段情況 報錯注入語句格式 and 1 2 union select1,2,3 from select count concat floor rand 0 2 sql語句 a from information schema.tables...

SQL注入 報錯注入

sql注入基礎 盲注 用於注入結果無回顯但錯誤資訊有輸出的情況 floor函式 返回小於等於某值的整數,例如floor 1 則返回1,floor 1.9 也返回1 rand函式 生成隨機數.可指定seed,指定後每次生成的數都一樣即偽隨機,不指定seed則每次生成的隨機數都不一樣.通過floor和r...