sql注入練習4(insert,update,delete)

本次練習來源pikachu平臺

檢測

單引號 :報錯
or 1=1# 數字型
’ or 1=1# 字符型用引號閉合,同時加註釋符號
and 1=1 數字型 and 1=1與原來一樣,不用註釋掉後面了
and 1=2 數字型 錯誤
’ or 1=1#
order by找數據數量等…
之後再補充一些常用的,比如繞過waf等

萬能密碼

萬能密碼是由於某些程序,通過採用判斷sql語句查詢結果的值是否大於0,來判斷用戶輸入數據的正確性造成的。當查詢之大於0時,代表用戶存在,返回true,代表登錄成功,否則返回false 代表登錄失敗。由於 ‘or 1=1–’ 在執行後,結果始終爲1,所以可以登錄成功。

類型判斷(數字vs字符)

1、數字型注入
當輸入的參數爲整形時,如果存在注入漏洞,可以認爲是數字型注入。

測試步驟:

(1) 加單引號,URL:www.text.com/text.php?id=3’

對應的sql:select * from table where id=3’ 這時sql語句出錯,程序無法正常從數據庫中查詢出數據,就會拋出異常;

(2) 加and 1=1 ,URL:www.text.com/text.php?id=3 and 1=1

對應的sql:select * from table where id=3’ and 1=1 語句執行正常,與原始頁面如任何差異;

(3) 加and 1=2,URL:www.text.com/text.php?id=3 and 1=2

對應的sql:select * from table where id=3 and 1=2 語句可以正常執行,但是無法查詢出結果,所以返回數據與原始網頁存在差異

如果滿足以上三點,則可以判斷該URL存在數字型注入。

2、字符型注入
當輸入的參數爲字符串時,稱爲字符型。字符型和數字型最大的一個區別在於,數字型不需要單引號來閉合,而字符串一般需要通過單引號來閉合的。

例如數字型語句:select * from table where id =3

則字符型如下:select * from table where name=’admin’

因此,在構造payload時通過閉合單引號可以成功執行語句:

測試步驟:

(1) 加單引號:select * from table where name=’admin’’

由於加單引號後變成三個單引號,則無法執行,程序會報錯;

(2) 加 ’and 1=1 此時sql 語句爲:select * from table where name=’admin’ and 1=1’ ,也無法進行注入,還需要通過註釋符號將其繞過;

(3) 加and 1=2— 此時sql語句爲:select * from table where name=’admin’ and 1=2 –’則會報錯

如果滿足以上三點,可以判斷該url爲字符型注入。

數字型注入(post)

測試–>猜測語句

$id=$_POST['id']
select 字段1,字段2 from 表名 where id=$id

在這裏插入圖片描述
比如這裏 id=2 or 1=1 # 爆出了所有信息(看render選項卡更清晰) 表示存在數字型注入

1.爆出顯位
1和2都行
在這裏插入圖片描述
2.數據庫名
在這裏插入圖片描述
3.表名
準備爆一下users表
在這裏插入圖片描述
4.字段名
在這裏插入圖片描述
5.查內容
在這裏插入圖片描述

insert/update型注入

僅記錄,請先面向搜索引擎務必搞懂原理

a’測試有報錯,可以使用xpath報錯注入
insert注入是在註冊處,update注入在更新資料處
抓包後發到repeater
在這裏插入圖片描述

在這裏插入圖片描述

delete注入

delete語句: delete froem users where id=1 and 1=1; 勿用or!整張表都會被刪除
多留言,然後刪除,抓包
在這裏插入圖片描述
在這裏插入圖片描述
發現id++(哦正常是把鼠標放在刪除按鈕上發現get請求有參數id的值,猜測這是delete語句的where條件)注入點就是在id參數上(get方式)

在這裏插入圖片描述
刪除失敗的時候,說明布爾注入

可以進行延時注入/布爾注入

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