web安全學習------3.注入攻擊基礎知識詳細介紹

注入攻擊分類

  • SQL注入
  • 命令注入
  • XML注入
  • LDAP注入

SQL注入

概念
SQL的攻擊方式是在客戶端的輸入數據中插入SQL命令,然後發送到 服務端,服務端對數據進行解析並執行非預期的操作。

可以SQL注入的條件

  1. SQL語句中包含不可信任的數據,如用戶輸入等。
  2. 動態構建SQL語句。(比如說在名字中添加一些單引號,分號,來人爲的改變select語句的形式,以達到自己想要輸出的結果)

例如:
ShipCity = TianJin
select * from OrdersTable where ShipCity = ‘TianJin’
ShipCity = TianJin’; drop table OrdersTable- -
select * from OrdersTable where ShipCity = ‘TianJin’; drop table OrderTable --’
(這裏提示說,這個;後就表示是另一個SQL語句了,上面第二個強行在名字後加單引號,使得名字這個串就封閉了,所以後面跟的drop語句依舊可以執行,這樣就達到了sql注入攻擊的目的)

注:連續兩個減號字符“–”後的文字 爲註解;“/”和“/”包圍起來的文字爲註釋,採用“;”字符區分不同命令 注意字符都是單引號括起來的。

SQL注入的特點

  • 普遍性
  • 隱蔽性
  • 簡單性
  • 危害性

SQL注入攻擊過程*重點

  1. 探測SQL注入點
  • 通常來說sql注入攻擊存在於一個動態網頁中,需要你輸入一些參數的操作中
  • 如果參數是數字,測試id=2-1與id=1返回的結果- 是否相同,如果做了 2-1=1的運算,說明可能存在數字型注入。
  • 在參數後面加單引號或雙引號,判斷返回結果是否有報錯
  • 添加註釋符,判斷前後是否有報錯,如id=1’ --+ 或 id=1" --+ 或 id=1’ # 或id=1" --+ 這裏的+號是用來當做空格來用,防止註釋減一這樣的情況
  • 在括號裏面的參數:SELECT first_name, last_name FROM users WHERE user_id = (’$id’);可以在參數後面加單雙引號和括號,如 id=1’) --+ 或 id=1") --+ 或id=1’) # 或id=1") --+
  • 參數後面跟or 或者and,判斷返回結果是否有變化,如1’ or ‘a’='a
    或者and ‘a’=‘a或者1’ or ‘1’='2
  • 如果返回的正確頁面與錯誤頁面都一樣,可以使用時間延遲判斷是否存 在注入,如 1’ and sleep(5)
  1. 判斷數據庫類型 (你比如說如果是mysql數據庫的話,會有一個默認的數據庫名和表名來訪問,也可以獲得很多信息)

MySql中的information_schema 結構用來存儲數據庫系統信息
information_schema 結構中這幾個表存儲的信息,在注入中可以用到的幾個表。
SCHEMATA 存儲數據庫名的,
關鍵字段:SCHEMA_NAME,表示數據庫名稱
TABLES 存儲表名的
關鍵字段:TABLE_SCHEMA表示表所屬的數據庫名稱;
TABLE_NAME表示表的名稱
COLUMNS 存儲字段名的
關鍵字段:TABLE_SCHEMA表示表所屬的數據庫名稱;
TABLE_NAME表示所屬的表的名稱
COLUMN_NAME表示字段名

  1. 提升權限,進一步攻擊

SQL注入分類

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