簡單聊聊SQL注入的原理以及一般步驟
原理
SQL注入是一種攻擊方式,在這種攻擊方式中,惡意代碼被插入到字符串中,然后該字符串傳遞到SQL Server的實例以進行分析和執(zhí)行。任何構成SQL語句的過程都應進行注入檢查,因為SQL Server將執(zhí)行其接收到的所有語法有效的查詢。
(摘自微軟 SQL注入,但要注意的是,SQL注入并不限于SQL Server,幾乎任何數(shù)據(jù)庫引擎都存在這個問題)
一般利用步驟
1.判斷注入點
判斷注入點有方面的含義,一是找到可能存在注入的位置,二十判斷該處能否進行注入。在靶場環(huán)境下,我們已經(jīng)知道,GET的參數(shù)id是與數(shù)據(jù)庫進行交互的點,接下來判斷能夠進行注入。
id為1,成功查詢,回顯正常
id為1',數(shù)據(jù)庫報錯,由報錯信息猜測閉合方式為單引號
id為1' --+,成功查詢,回顯正常,印證猜測,
id分別為1' and 1=1 --+和1' and 1=2--+,通過回顯情況,進一步判斷能否注入
1=1為永真,當1成功查詢,若1=1也成功查詢,則頁面返回正常,1=2為永假,因此若1=2得到執(zhí)行,則頁面必返回不正常。通過對比二者返回結果,可知改點能否進行注入。
2.判斷查詢字段數(shù)
為了將我們想要的結果能夠顯示在頁面上,我們需要用到聯(lián)合查詢,聯(lián)合查詢的條件之一是必須保證前后查詢語句的字段數(shù)相等,因此,我們需要判斷查詢的字段數(shù)。
一般采用order by或union select如下:
order by 大于3的數(shù)時頁面返回不正常,小于等于3時返回正常,得知原查詢語句的字段數(shù)為3?;?/p>
當我們聯(lián)合查詢4列時,得到了查詢語句由不同的列的錯誤,查詢3列時:
成功查詢,得原查詢語句只有三列。
3.查數(shù)據(jù)庫名、版本號、用戶名等信息
union聯(lián)合查詢的規(guī)則是當前一個查詢失敗時執(zhí)行第二個查詢,前面我們知道了查詢有三個字段,接下來將傳入id為0,判斷是三個字段的回顯位置。
再由數(shù)據(jù)庫內置的version()
、database()
、user()
查詢出版本號、數(shù)據(jù)庫當前名和當前用戶。
4.查詢表名
前面我們查詢得知,當前數(shù)據(jù)庫版本為5.5.53,在MySQL5.5后版本都內置了數(shù)據(jù)庫information_schema。它存儲了數(shù)據(jù)庫中所有的表名、字段名等信息。從而可以構造查詢語句,獲取表名。
payload:?id=0' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3--+
這里的group_concat()
為SQL語句內置的聚合函數(shù),用來將查詢的結果作為一個字符串輸出。
(使用payload:?id=0' union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+
)
5.查詢字段名
知道了所有的表名,接下來選擇一個表,查詢其中所有的字段名。
payload:?id=0' union select 1,(select group_concat(column_name) from information_schema.columns where table_name='users'),3--+
6.查詢記錄內容
有了表名和字段名,便可以爆出數(shù)據(jù)庫中的記錄了。
payload:?id=0' union select 1,group_concat(username),group_concat(password) from users --+
以上是一般SQL注入的流程,當然還有一些像報錯注入,請求頭注入、select into outfile 寫入一句話木馬等姿勢未介紹。后續(xù)學習過程中再逐漸補充。
總結
到此這篇關于SQL注入的原理以及一般步驟的文章就介紹到這了,更多相關SQL注入的原理及步驟內容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持本站!
版權聲明:本站文章來源標注為YINGSOO的內容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。