從小白到web滲透工程師——零基礎指南(2)sql注入漏洞

hello,各位小夥伴,在看過上一篇文章之後,想必大傢伙對於web滲透工程師有了一定的瞭解,那麼,作爲一名滲透工程師,挖洞,就是我們的日常工作中必不可少的一部分了。在安全圈中,如果你挖的洞危險係數夠高,那說明你越厲害。各種src平臺提交的漏洞數量也彰顯了一名web滲透工程師的水平。(當然,本人未在src平臺上提交過漏洞,屬實丟人)。

我原來也有想過,給大家講解一下html,php,mysql的相關知識,但我發現這種的教學視頻網絡上一搜一大把,大家可以自信觀看,如果我們想達到一名滲透工程師的標準,最差也要會他們的基礎。(基礎的意思是會編寫基本的html網頁,會寫基礎php代碼,會創建數據庫,並且進行增刪改查。聯合起來就是會在html網頁中嵌入php代碼並且連接數據庫。)

嫌麻煩的小夥伴也可以找我來要,我這裏有現成的資源。

                              

                                                         各位小夥伴想要的話添加我vx

                                                                  

話不多說,進入我們今天的主題,sql注入

他的拓步圖如下:

sql注入作爲常年位居owasp首位的漏洞,其重要性不言而喻。(注:swasp 開放式web應用安全項目),對於sql注入,也可以這麼說,當用戶可以和數據庫交互的那一刻起,sql注入漏洞就已經存在了。(不明白的小夥伴可以惡補前邊的php和mysql基礎,意思就是咱們用戶的數據會放在數據庫中)

sql注入的原理:應用程序把用戶輸入的數據構造成動態的sql語句來訪問數據庫時,由於數據庫未對參數進行過濾或者說過濾的不完全,就造成了sql注入。惡意用戶發現這一漏洞後,就會把精心構造好的惡意sql語句放到web登錄界面或者url中,通過騙過服務器來執行惡意的sql命令。

簡而言之一句話就是:用戶輸入的惡意sql語句被sql解釋器執行。

sql注入的危害:惡意用戶會看到數據庫所儲存的信息,包括用戶名密碼,甚至上傳木馬,來控制整個服務器。

sql的分類:包括數字型,字符型。根據類型不同,還分爲盲注,延時注入,顯錯注入,和延時注入。

當然,知道了sql注入的危害,我們如何防範呢

  1. 使用指定的規則庫,對用戶輸入的數據進行安全驗證,驗證不通過的直接拒絕。
  2. 在應用與數據庫的交匯處使用參數化查詢,禁止將用戶輸入的語句直接與sql查詢語句拼接
  3. 嚴格控制數據庫的長度
  4. 對敏感字符如 < * %等進行編碼或者轉義處理
  5. 對數據的類型應使用int型
  6. 嚴格限制網站用戶的數據庫權限
  7. 禁止在網站上顯示sql的錯誤信息

說了這麼多,給大家舉一個例子,相信大家還不是特別明白,我給大家舉個例子,大家就明白了。

攻擊思路:首先在得到一個網址的時候,要先看他存不存在變量,存在的話在考慮爲字符型還是數字型,如果不存在,在考慮是否爲post注入。

注入過程:

1 打開網址發現是一個貓舍的頁面

2 點擊查看新聞,我們發現出現了貓舍的介紹,並且在上方url處出現id=1,我們懷疑此處有注入點

 3 使用and 1=1 發現頁面返回正常

4 把1=1 換成 1=2 頁面報錯,說明存在sql注入

5 使用order by 函數判斷有幾列,order by 1 正常回顯

6 接着使用order by 2,頁面回顯正常。

7 接下來我們在用order by 3,發現頁面錯誤,說明此處存在2列。

8 然後我們知道了有兩列,就可以使用selcet函數來判斷注入點。我們使用聯合注入

9 發現在2處存在注入點,接着我們爆庫名,發現庫名爲貓舍。

10 構造函數 id=1 and 1=2 union select 1,table_name from information_schema.tables where table_schema=database() limit 0,1

11 發現表名爲admin,查詢另一個表名爲dirs,由此猜測我們的信息大概率在admin裏

12 繼續爆列名,構造語句 id=1 and 1=2 union select 1,column_name from information_schema.columns where table_schema=database() and table_name=’admin’ limit 0,1

爆出列名爲id

13 繼續使用limit。爆出其他列名

我們接連爆出來username和password

14 接下來,我們用group_concat 函數直接把用戶名全爆出來

構造函數 id=1 and 1=2 union select 1,group_concat(username) from admin

以上步驟,就是數字型sql注入的方法,相對比較簡單,這也是騰訊課堂一個學院的靶場,感覺不錯,就拿過來用了。如有侵權請聯繫我,我會刪除。

我感覺我們在實際滲透過程中,用做到手工注入和工具注入相結合。但手工注入的方法一定要理解。

由於本人水平有限,所寫文章難免有紕漏之處,所講不明白之處還請多多包涵。

有什麼不明白的地方也可以加我vx,在上文也已經發過了,我在發一遍

                                                                      

本人定盡全力幫你解決問題。好了,下篇文章再見。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章