sql注入要掌握資料庫的哪些部分?要不要把資料庫從頭到腳學一遍??

目前的水平是SQL注入知道1=1,其餘什麼select, union之類的ctf題看的迷迷糊糊。


首先插播一句題外話,對於安全知識和技能的學習是永無止境的,並不存在不需要學習的東西。

這裡特別提到」資料庫」,SQL注入攻擊類型和資料庫語句成直接關係,資料庫語句作為了解注入原理的前提條件,必須熟透於心,譬如,布爾盲注、時間盲注、報錯注入、聯合查詢、堆查詢等。反之,如果不了解以上原理,那隻能停留在跑腳本的階段,然而,目前市面上的防火牆對於SQL注入方面的攔截已經做得相對完善,在防火牆的保護下,單單依靠跑腳本是無法檢測到SQL注入的。

因此,能熟練了解各種注入類型,並在此基礎上運用自身拼接出來的語句繞過防火牆,這種既能分析問題又能解決問題,穩紮穩打的安全人才才是真正被社會所需要的。

發佈於 2018-06-08繼續瀏覽內容知乎發現更大的世界打開Chrome繼續阿洋阿洋公眾號【小狼工具】,學更多黑客技術

先說結論:

當然需要學習資料庫

這些其實都是最基本的東西

不管你學不學,只要你深入,肯定是都會用到這個東西的

新手先入門,別一下子啥都碰。感覺高票列那麼多書籍,又是來勸退的吧。

MySQL是一門偏向實際應用的課程。和其他語言一樣,光靠看書和聽課肯定不夠,主要還是得靠練習。

對於新手來說,安裝環境往往是最困難的。所以就給大家推薦兩個網課,免安裝,免費,且比較完整的網課。有理論講解,也有實際練習。一舉多得。

學SQL這種技能呢,練習才是王道。

那麼怎麼來學呢?

簡單說下

首先,學習基本的SQL語法。完成這個後,你就可以編寫SQL語句了。

這一步推薦:W3Schools的 SQL 教程。

其次,學習資料庫的主要功能和使用方法,比如用戶相關或者許可權相關等等。

我推薦兩本書:

一、《MySQL必知必會》 這本書講的非常全,從基本概念,到查詢到插入新建表,用戶的管理,都有具體的例子,非常適合沒有任何基礎的同學來學習Mysql,總之這本書學習的方法就是:1、十分鐘了解下資料庫的基本概念 2、找到練手的資料庫 3、對照著上面的內容去敲。本書里也有大量的內容是講sql的,可以結合w3c的sql教程一起,有取捨地看。

二、《資料庫系統概念》這本書是dba必看的。

看完這些並且實踐+思考之後,可以算入門了。

接下來對於希望深入學習的小夥伴

我推薦幾本書(很多大神都這麼推薦),《高性能MySQL(第3版)》、 《MySQL技術內幕(第4版)》,《MySQL技術內幕 InnoDB存儲引擎》,《深入理解MySQL》還有Mysql的官網。讀完這些東西,再加些豐富的經驗,理論上來講就具備DBA的水平了。

十分推薦閱讀Planet MySQL上匯總的博客,特別是Perconas MySQL InnoDB performance and scalability blog.

但是,正如我開頭所言的。面對問題的時候一定要積極思考!

比如:

我問你,面對一個並發量比較高的場景,如何配置mysql的連接數?

你可能會回答:「哦,就是調高max_connection的數值吧。」

那,你有沒有思考過調到多少是最合適的呢?為什麼這樣設置就最合適呢?

也許你會回答:「恩我知道,可以看系統之前的max_used_connection的數值,然後來設置。也可以調高back_log的值。」

那你有沒有思考過,max_connection連接數太高會有什麼不好的影響呢?back_log設置的太高有什麼不好的地方呢?max_connect的上限其實是取決於mysql能獲得的文件描述符的數量,也就是說你就算設置成10000,最後也是沒用的,系統會根據機器的情況自動調低。

也許你會回答:「恩我知道,設置太高,會有系統開銷...」

那你有沒有思考過,這些開銷具體是什麼呢?是什麼工作導致了需要這些內存開銷?

也許你還會回答,在連接創建的時候,會立刻為它分配連接緩衝區以及查詢緩衝區,這些都會吃內存。

那你有沒有思考過,佔據的資源具體是多少呢?取決於哪些因素呢?

好了,我們先結束這個問題。回到知乎的問題上來,其實我說了這麼多,就是表達要如何自學mysql。

所以的所以,你必須不斷思考,才能在工作中面對具體場景的時候,非常淡定地推斷:「哦,一定是這裡出了問題。應該怎麼怎麼做。」

面對問題,拿出打破砂鍋問到底的精神,先思考一番,給出自己的假設,不要著急地去找度娘,谷歌。思考過後,帶著你的推斷或者答案,大膽地去搜索吧!去看看別人的見解,去看看官方的描述!

這才是一個工程師應有的態度。

最後我想給出一些有價值的學習資料。可以省去一些時間。

-電子書:

我認為多看書還是有好處的。有些書值得反覆看許多遍,有時候只看一遍無法深刻理解吸收,思考也不夠充分。

電子書下載傳送門

  • 《mysql必知必會》
  • 《高性能mysql第三版》
  • 《資料庫系統概念》
  • 《深入理解MySQL》
  • 《MySQL性能調優與架構設計--全冊》《SQL Antipatterns》
  • 《MySQL技術內幕 InnoDB存儲引擎》

-學習mysql的網站:

MySQL Tutorial - Learn MySQL Fast, Easy and Fun.

可以快速,簡單和有趣的學習MySQL。以簡單易懂的方式為您提供完整的MySQL教程。每個教程都有SQL腳本和可用屏幕截圖的實際示例。

mysql學習資料 | mysql深入學習筆記 深度筆記

有很多mysql的資料可以看,還可以看網友做的學習筆記。

W3Schools SQL 教程

可以學習基礎的sql語句

-閱讀官方手冊

無論英文好不好,看英文手冊的能力是一定要有,也一定要培養的。

mysql官方手冊:14 The InnoDB Storage Engine

-大牛的博客

領域專家的博客是十分具有學習價值的,下面列舉幾個比較好的:

何登成的技術博客 何登成的技術博客

淘寶丁奇 追風刀·丁奇 - ITeye技術網站

周振興@淘寶 花名:蘇普 一個故事@MySQL DBA

阿里雲資料庫高級專家彭立勛為 MariaDB Foundation 正式成員,負責全球Replication模塊相關補丁的Review。彭立勛也成為首位被MariaDB基金會引入的中國程序員。

想要提高自己的技術水平,永遠要記得,多動手,多實戰


先說結論:

當然需要學習資料庫

這些其實都是最基本的東西

不管你學不學,只要你深入,肯定是都會用到這個東西的

新手先入門,別一下子啥都碰。感覺高票列那麼多書籍,又是來勸退的吧。

MySQL是一門偏向實際應用的課程。和其他語言一樣,光靠看書和聽課肯定不夠,主要還是得靠練習。

對於新手來說,安裝環境往往是最困難的。所以就給大家推薦兩個網課,免安裝,免費,且比較完整的網課。有理論講解,也有實際練習。一舉多得。

學SQL這種技能呢,練習才是王道。

那麼怎麼來學呢?

簡單說下

首先,學習基本的SQL語法。完成這個後,你就可以編寫SQL語句了。

這一步推薦:W3Schools的 SQL 教程。

其次,學習資料庫的主要功能和使用方法,比如用戶相關或者許可權相關等等。

我推薦兩本書:

一、《MySQL必知必會》 這本書講的非常全,從基本概念,到查詢到插入新建表,用戶的管理,都有具體的例子,非常適合沒有任何基礎的同學來學習Mysql,總之這本書學習的方法就是:1、十分鐘了解下資料庫的基本概念 2、找到練手的資料庫 3、對照著上面的內容去敲。本書里也有大量的內容是講sql的,可以結合w3c的sql教程一起,有取捨地看。

二、《資料庫系統概念》這本書是dba必看的。

看完這些並且實踐+思考之後,可以算入門了。

接下來對於希望深入學習的小夥伴

我推薦幾本書(很多大神都這麼推薦),《高性能MySQL(第3版)》、 《MySQL技術內幕(第4版)》,《MySQL技術內幕 InnoDB存儲引擎》,《深入理解MySQL》還有Mysql的官網。讀完這些東西,再加些豐富的經驗,理論上來講就具備DBA的水平了。

十分推薦閱讀Planet MySQL上匯總的博客,特別是Perconas MySQL InnoDB performance and scalability blog.

但是,正如我開頭所言的。面對問題的時候一定要積極思考!

比如:

我問你,面對一個並發量比較高的場景,如何配置mysql的連接數?

你可能會回答:「哦,就是調高max_connection的數值吧。」

那,你有沒有思考過調到多少是最合適的呢?為什麼這樣設置就最合適呢?

也許你會回答:「恩我知道,可以看系統之前的max_used_connection的數值,然後來設置。也可以調高back_log的值。」

那你有沒有思考過,max_connection連接數太高會有什麼不好的影響呢?back_log設置的太高有什麼不好的地方呢?max_connect的上限其實是取決於mysql能獲得的文件描述符的數量,也就是說你就算設置成10000,最後也是沒用的,系統會根據機器的情況自動調低。

也許你會回答:「恩我知道,設置太高,會有系統開銷...」

那你有沒有思考過,這些開銷具體是什麼呢?是什麼工作導致了需要這些內存開銷?

也許你還會回答,在連接創建的時候,會立刻為它分配連接緩衝區以及查詢緩衝區,這些都會吃內存。

那你有沒有思考過,佔據的資源具體是多少呢?取決於哪些因素呢?

好了,我們先結束這個問題。回到知乎的問題上來,其實我說了這麼多,就是表達要如何自學mysql。

所以的所以,你必須不斷思考,才能在工作中面對具體場景的時候,非常淡定地推斷:「哦,一定是這裡出了問題。應該怎麼怎麼做。」

面對問題,拿出打破砂鍋問到底的精神,先思考一番,給出自己的假設,不要著急地去找度娘,谷歌。思考過後,帶著你的推斷或者答案,大膽地去搜索吧!去看看別人的見解,去看看官方的描述!

這才是一個工程師應有的態度。

最後我想給出一些有價值的學習資料。可以省去一些時間。

-電子書:

我認為多看書還是有好處的。有些書值得反覆看許多遍,有時候只看一遍無法深刻理解吸收,思考也不夠充分。

電子書下載傳送門

  • 《mysql必知必會》
  • 《高性能mysql第三版》
  • 《資料庫系統概念》
  • 《深入理解MySQL》
  • 《MySQL性能調優與架構設計--全冊》《SQL Antipatterns》
  • 《MySQL技術內幕 InnoDB存儲引擎》

-學習mysql的網站:

MySQL Tutorial - Learn MySQL Fast, Easy and Fun.

可以快速,簡單和有趣的學習MySQL。以簡單易懂的方式為您提供完整的MySQL教程。每個教程都有SQL腳本和可用屏幕截圖的實際示例。

mysql學習資料 | mysql深入學習筆記 深度筆記

有很多mysql的資料可以看,還可以看網友做的學習筆記。

W3Schools SQL 教程

可以學習基礎的sql語句

-閱讀官方手冊

無論英文好不好,看英文手冊的能力是一定要有,也一定要培養的。

mysql官方手冊:14 The InnoDB Storage Engine

-大牛的博客

領域專家的博客是十分具有學習價值的,下面列舉幾個比較好的:

何登成的技術博客 何登成的技術博客

淘寶丁奇 追風刀·丁奇 - ITeye技術網站

周振興@淘寶 花名:蘇普 一個故事@MySQL DBA

阿里雲資料庫高級專家彭立勛為 MariaDB Foundation 正式成員,負責全球Replication模塊相關補丁的Review。彭立勛也成為首位被MariaDB基金會引入的中國程序員。

想要提高自己的技術水平,永遠要記得,多動手,多實戰


web安全肯定是要學習資料庫的。

根據你所提的這個問題,覺得題主是剛剛接觸web安全,有一定基礎但沒有深入了解。在這裡提一些基礎的建議。

1. 語言的學習,web安全會涉及到很多語言,你需要有一定的語言基礎,才能更加深入的理解目標網站,以至找到它漏洞所在。Web安全所需要的語言:php(大部分網站開發所用的語言),python(flask、dinggo框架、編寫web腳本),java(web開發語言),go(web開發語言)。

2. 基礎的web安全知識。如計算機網路基礎、http協議、php弱類型、sql注入漏洞、xss漏洞、文件包含漏洞等。其中sql注入漏洞,就需要結合資料庫相關的知識進行攻擊。

3. 更進一步的學習。關注一些web安全相關的公眾號,獲取最新的web安全信息。如最新的cve、最新的繞過方式等。

4. 推薦一個web安全學習的網址:https://github.com/CHYbeta/Web-Security-Learning。在這個網址你可以自主學習到web安全知識。另外你也可以通關打ctf比賽來提高自己web安全水平。

了解最新「智馭安全」產品、技術與解決方案,歡迎關注微信公眾號:丁牛科技(Digapis_tech)

發佈於 2019-01-08繼續瀏覽內容知乎發現更大的世界打開Chrome繼續CarrierCarrierWeb安全/CTFer/機器學渣/想轉二進位

注入這輩子是不可能注入的,手工注又不會,sqlmap命令又記不住,只有看看師傅們的wp,才能照著做做題這樣子,實驗吧i春秋里個個都是人才,做題又厲害,我有超喜歡在裡面........


注入這輩子是不可能注入的,手工注又不會,sqlmap命令又記不住,只有看看師傅們的wp,才能照著做做題這樣子,實驗吧i春秋里個個都是人才,做題又厲害,我有超喜歡在裡面........


個人見解:肯定是要學習的,舉個栗子:如果遇到工具無法進行SQL 注入的時候只能手工來,在構造查詢語句時自然要理解其意!so,資料庫肯定是要學習的!


推薦閱讀:
相关文章