准備環境
win2003虛擬機 需要安裝SQL Server2008
一、原理
注入產生的原因是接受相關參數未經處理直接帶入數據庫查詢操作(注入攻擊屬於服務端的攻擊,因為它攻擊的是服務器里面的數據庫,xss是客戶端的攻擊)
注入最終與數據庫,與腳本、平台無關
二、or漏洞解析(判斷有無注入點的辦法:)
1.單引號
2. 1=1(-1=-1,3=3),有些把1=1或2=2加入黑名單了,但是咱們可以試試別的,如 3=3.-3=-3;
Name和 password 是沒有經過任何處理,直接拿前端傳入的數據,這樣拼接的SQL會存在注入漏洞。(帳戶:yuan 123)
現在我們來分析一下:'or 1=1--(--注釋的意思)為什么能登錄系統,原因有如下:
(1)、SELECT * FROM admin WHERE Name=''or 1=1 首先看這條查詢語句,查詢所有來自admin表的數據,條件name為空或者1=1,這兩個條件只要一個滿足就為真, Name=''or 1=1 現在1=1就是真而且是沒任何作用的真,那么最終數據庫執行的語句相當於 select * from Admin
(2)、因為Name值中輸入了“--”注釋符,后面語句被省略而登錄成功。(常常的手法:前面加上'; ' (分號,用於結束前一條語句),后邊加上'--' (用於注釋后邊的語句))
(3)、不同的程序萬能密碼也是不一樣的,如ASP的萬能密碼是'or'='or' PHP的萬能密碼是'or 1=1/* (如果在登陸窗口輸入錯誤的語法出現報錯一般說明存在sql注入)詳細請看: http://chengkers.lofter.com/post/14c64b_379726
三、找注入點:
也就是大型網站可能與數據庫交互的地方:
1.登錄的地方:用戶名和密碼一定是保存在數據庫里面的
2.更新的地方:例如修改密碼,一定會把密碼帶入到數據庫中
3.注冊賬號的地方:賬號密碼都會保存在數據庫中
4.留言板
注入可能出現在哪個地方:
http頭、cookies、referee、user、agent、post提交數據包的地方等