从小白到web渗透工程师——零基础指南(2)sql注入漏洞
hello,各位小伙伴,在看過上一篇文章之后,想必大家伙對于web滲透工程師有了一定的了解,那么,作為一名滲透工程師,挖洞,就是我們的日常工作中必不可少的一部分了。在安全圈中,如果你挖的洞危險系數(shù)夠高,那說明你越厲害。各種src平臺提交的漏洞數(shù)量也彰顯了一名web滲透工程師的水平。(當然,本人未在src平臺上提交過漏洞,屬實丟人)。
我原來也有想過,給大家講解一下html,php,mysql的相關(guān)知識,但我發(fā)現(xiàn)這種的教學視頻網(wǎng)絡(luò)上一搜一大把,大家可以自信觀看,如果我們想達到一名滲透工程師的標準,最差也要會他們的基礎(chǔ)。(基礎(chǔ)的意思是會編寫基本的html網(wǎng)頁,會寫基礎(chǔ)php代碼,會創(chuàng)建數(shù)據(jù)庫,并且進行增刪改查。聯(lián)合起來就是會在html網(wǎng)頁中嵌入php代碼并且連接數(shù)據(jù)庫。)
嫌麻煩的小伙伴也可以找我來要,我這里有現(xiàn)成的資源。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?各位小伙伴想要的話添加我vx
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
話不多說,進入我們今天的主題,sql注入
他的拓步圖如下:
sql注入作為常年位居owasp首位的漏洞,其重要性不言而喻。(注:swasp?開放式web應(yīng)用安全項目),對于sql注入,也可以這么說,當用戶可以和數(shù)據(jù)庫交互的那一刻起,sql注入漏洞就已經(jīng)存在了。(不明白的小伙伴可以惡補前邊的php和mysql基礎(chǔ),意思就是咱們用戶的數(shù)據(jù)會放在數(shù)據(jù)庫中)
sql注入的原理:應(yīng)用程序把用戶輸入的數(shù)據(jù)構(gòu)造成動態(tài)的sql語句來訪問數(shù)據(jù)庫時,由于數(shù)據(jù)庫未對參數(shù)進行過濾或者說過濾的不完全,就造成了sql注入。惡意用戶發(fā)現(xiàn)這一漏洞后,就會把精心構(gòu)造好的惡意sql語句放到web登錄界面或者url中,通過騙過服務(wù)器來執(zhí)行惡意的sql命令。
簡而言之一句話就是:用戶輸入的惡意sql語句被sql解釋器執(zhí)行。
sql注入的危害:惡意用戶會看到數(shù)據(jù)庫所儲存的信息,包括用戶名密碼,甚至上傳木馬,來控制整個服務(wù)器。
sql的分類:包括數(shù)字型,字符型。根據(jù)類型不同,還分為盲注,延時注入,顯錯注入,和延時注入。
當然,知道了sql注入的危害,我們?nèi)绾畏婪赌?/p>
說了這么多,給大家舉一個例子,相信大家還不是特別明白,我給大家舉個例子,大家就明白了。
攻擊思路:首先在得到一個網(wǎng)址的時候,要先看他存不存在變量,存在的話在考慮為字符型還是數(shù)字型,如果不存在,在考慮是否為post注入。
注入過程:
1 打開網(wǎng)址發(fā)現(xiàn)是一個貓舍的頁面
2 點擊查看新聞,我們發(fā)現(xiàn)出現(xiàn)了貓舍的介紹,并且在上方url處出現(xiàn)id=1,我們懷疑此處有注入點
?3 使用and 1=1 發(fā)現(xiàn)頁面返回正常
4 把1=1 換成 1=2 頁面報錯,說明存在sql注入
5 使用order by 函數(shù)判斷有幾列,order by 1 正?;仫@
6 接著使用order by 2,頁面回顯正常。
7 接下來我們在用order by 3,發(fā)現(xiàn)頁面錯誤,說明此處存在2列。
8 然后我們知道了有兩列,就可以使用selcet函數(shù)來判斷注入點。我們使用聯(lián)合注入
9 發(fā)現(xiàn)在2處存在注入點,接著我們爆庫名,發(fā)現(xiàn)庫名為貓舍。
10 構(gòu)造函數(shù) id=1 and 1=2 union select 1,table_name from information_schema.tables where table_schema=database() limit 0,1
11 發(fā)現(xiàn)表名為admin,查詢另一個表名為dirs,由此猜測我們的信息大概率在admin里
12 繼續(xù)爆列名,構(gòu)造語句 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 繼續(xù)使用limit。爆出其他列名
我們接連爆出來username和password
14 接下來,我們用group_concat 函數(shù)直接把用戶名全爆出來
構(gòu)造函數(shù) id=1 and 1=2 union select 1,group_concat(username) from admin
以上步驟,就是數(shù)字型sql注入的方法,相對比較簡單,這也是騰訊課堂一個學院的靶場,感覺不錯,就拿過來用了。如有侵權(quán)請聯(lián)系我,我會刪除。
我感覺我們在實際滲透過程中,用做到手工注入和工具注入相結(jié)合。但手工注入的方法一定要理解。
由于本人水平有限,所寫文章難免有紕漏之處,所講不明白之處還請多多包涵。
有什么不明白的地方也可以加我vx,在上文也已經(jīng)發(fā)過了,我在發(fā)一遍
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
本人定盡全力幫你解決問題。好了,下篇文章再見。
總結(jié)
以上是生活随笔為你收集整理的从小白到web渗透工程师——零基础指南(2)sql注入漏洞的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP面试注意事项与问题
- 下一篇: StusGame 贴吧云签到php源码下