sql注入1


一、函數

  1、version()  MYsql版本

  2、user()      數據庫用戶名

  3、database()   數據庫名

  4、@@datadir  數據庫路徑

  5、@@version_compile_os   操作系統版本

  6、current_user()   當前用戶名(可查看權限)

  7、load_file()        讀文件

  8、into outfile() / into dumpfile   寫文件

        9、group_concat(str1,str2...)     連接一個組所有的字符串,並以逗號分隔每一條數據。

 

二、注釋,可用#     --+   url 中用%23

 

三、union操作符

  用於合並兩個或多個 SELECT 語句的結果集。請注意,UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每條 SELECT 語句中的 列的順序必須相同。 

  SQL UNION 語法:

   SELECT column_name(s) FROM table_name1

  UNION

  SELECT column_name(s) FROM table_name2

  注釋:默認地,UNION 操作符選取不同的值。如果允許重復的值,請使用 UNION ALL。

  SQL UNION ALL 語法

  SELECT column_name(s) FROM table_name1

  UNION ALL

  SELECT column_name(s) FROM table_name2

  另外,UNION 結果集中的列名總是等於 UNION 中第一個 SELECT 語句中的列名。 

 

四、Mysql 有一個系統數據庫 information_schema,

  存儲着所有的數據庫的相關信息,一般的, 我們利用該表可以進行一次完整的注入。以下為一般的流程。

  猜數據庫

   select schema_name from information_schema.schemata

  猜某庫的數據表

  select table_name from information_schema.tables where table_schema=’xxxxx’

   猜某表的所有列

   Select column_name from information_schema.columns where table_name=’xxxxx’

   獲取某列的內容

  Select *** from ****

  

  上述知識參考用例:less1-less4

 

五、注釋

  1、單行注釋,#后面直接加內容 ;單行注釋,--后面必須要加空格 ;

  2、多行注釋,/**/中間可以跨行;

         3、內聯注入, 內聯注釋是MySQL數據庫為了保持與其他數據庫兼容,特意新添加的功能。          

          為了避免從MySQL中導出的SQL語句不能被其他數據庫使用,它把一些 MySQL特有的語句放在 /*! ... */ 中,

          這些語句在不兼容的數據庫中使用時便 不會執行。而MySQL自身卻能識別、執行。 

六、order by 語句

  1. ORDER BY 語句用於 根據指定的列對結果集進行排序。

  2. ORDER BY 語句默認 按照升序對記錄進行排序。

 

七、字符串連接函數

  1、concat(str1,str2..)函數 直接連接

  2、group_concat(str1,str2..)函數 使用逗號做為分隔符

  3、concat_ws(sep,str1,str2..)函數 使用第一個參數做為分隔符

 

八、information_schema

例:

  select schema_name from information_schema.schemata;

  select table_name from information_schema.schemata where table_schema = ‘zzcms’; 

  select column_name from information_schema.columns where table_schema = ‘zzcms’ and ‘table_name’ = ‘zzcms_zx’;

 

九、SQL注入的分類

 

 

十、基於聯合查詢的注入模式,步驟

 

十一、判斷是否存在注入與求閉合字符

   1、id = 1’ 異常

    id = 1 and 1 =1 -- + 正確

    id = 1 and 1=2 -- + 錯誤

    結論:極有可能存在數字型SQL注入

    ps:單引號有個特殊的作用:命令分隔符

 

  2、id  = 1’   異常 

       id = 1’ and  1 =1 -- +  正確

        id = 1’ and 1=2 -- +     錯誤 

     結論:極有可能存在單引號字符型SQL注入

 

  3、id  = 1"   異常 

    id = 1” and  1 =1 -- +  正確 

             id = 1” and 1=2 -- +     錯誤 

      結論:極有可能存在雙引號字符型SQL注入

 

  4、id  = 1)  異常

        id = 1) and  1 =1 -- +  正確 

   id = 1) and 1=2 -- +     錯誤

        結論:極有可能存在括號數字型SQL注入

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM