web安全/滲透測試(十一):SQL注入

一、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是默認的數據庫

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章