SQL注入之-盲注

前言

Tips: 後續根據本人認知體系不斷壯大會持續更新 QAQ

首先了解幾個需要的函數:
1. A = SBUSTR(str,pos);
2. B = LENGTH()
3. C = IF(expr1,expr2,expr3)
4. D = SLEEP(time)

A 作用: 就是從pos開始的位置,一直截取到最後。
B 作用: 用於獲取對應字段的字符長度。
C 作用: 用於匹配結果導向的真(True)與假(False)。
D 作用: 延時作用添加數字以秒爲單位。

盲注原理與分類

在這裏插入圖片描述

盲注流程

  1. 判斷是否存在注入點
  2. 猜解當前數據庫名稱,注:需要先猜解名稱的長度
  3. 猜解數據庫中的表名,注:需要先猜解名稱的長度
  4. 猜解表中的字段名, 注:需要先猜解字段的數量
  5. 猜解數據, 注:需要先猜解數據的記錄數,再對每個字段的長度和數據迚行猜解
  1. 從流程中丌難看出盲注的核心意義在於“猜”,那猜解一個範圍中的數值最有效的方式是什麼?
  2. 二分法:我們先取值一個範圍 1-100,當我們知道正確的答案就在 1-100 其中一個時我們選擇 2 分法中行快速找到目標數值,我們第一次取值 50 判斷目標大於 50 還是小於 50,大於 50 則再從 50-100中取中間值迚行判斷,以此類推。

基於布爾的盲注

在這裏插入圖片描述

我們通過構造一個判斷條件( length(database()) = 8)判斷目標是否滿足條件,滿足條件則執行成功,不滿足則執行失敗。database()是當前數據庫名稱length(database())取出數據庫名稱的長度< = > 分別爲大於、等於、小於,用來判斷是否滿足條件。用來猜解。

在這裏插入圖片描述
在這裏插入圖片描述

取值範圍思路: 先使用<>大於號小於號確定範圍,然後一直縮小範圍,當範圍縮小到個位數就可以用=號來判斷具體數值。

在這裏插入圖片描述

基於時間的盲注

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

SQL 注入讀寫文件


在這裏插入圖片描述

SQL 注入寫入文件

into outfile 語句用於把表數據導出到一個文本文件中
用法:select * from Table into outfile ‘/路徑/文件名’
例:
MariaDB [security]> select * from users into outfile “/var/lib/mysql/test.txt”;
Query OK, 13 rows affected (0.00 sec)
打開另一個終端查看導入的文件:
[root@centos ~]# cat /var/lib/mysql/test.txt
在這裏插入圖片描述
可以看到把以上查詢 users 表中的內容保存到文件中,由此我們可以利用此方法通過 sql 注入向系統中寫入文件訪問 Less-7 頁面:http://192.168.1.63/sqli-labs/Less-7/http://192.168.1.63/sqli-labs/Less-7/?id=-1’)) union select 1,2,‘test’ into outfile"/var/lib/mysql/test.php"–+
在這裏插入圖片描述
在這裏插入圖片描述

基於報錯的 SQL 注入

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

總結

1. SQL 注入-盲注
2. SQL 注入讀寫文件
3. 基於報錯的 SQL 注入

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章