一 程式安全 SQL注入漏洞

2022-09-02 03:12:11 字數 1757 閱讀 3891

先新建mydb.mdf,表myuser:

測試頁面:

一、利用報錯獲取資訊

操作:按姓名精確查詢,在輸入框輸入:小衛' and 1=db_name()/0 and '1'='1

執行語句:select * from myuser where uname='小衛' and 1=db_name()/0 and '1'='1

結果:得到資料庫名「mydb.mdf」

操作:按姓名精確查詢,在輸入框輸入:小衛' and 1=(select top 1 name from sys.tables)/0 and '1'='1

執行語句:select * from myuser where uname='小衛' and 1=(select top 1 name from sys.tables)/0 and '1'='1

結果:得到表名「myuser」

修復建議:把接收引數的乙個單引號變成兩個單引號

執行語句:

select * from myuser where uname='小衛'' and 1=db_name()/0 and ''1''=''1'

select * from myuser where uname='小衛'' and 1=(select top 1 name from sys.tables)/0 and ''1''=''1'

結果:無報錯資訊

二、數字型注入

操作:按編號精確搜尋,在輸入框輸入:2;delete from myuser--

執行語句:select * from myuser where uid=2;delete from myuser--

結果:myuser 表資料被刪除

修復建議:過濾關鍵字 select、drop、delete 等

三、模糊查詢

目的:搜尋出姓名帶「%」的客戶

操作:按姓名模糊查詢,在輸入框輸入:%

執行語句:select * from myuser where uname like '%%%'

結果:全部的客戶都被搜尋出來了

修復建議:加中括號轉義百分號:[%]

執行語句:select * from myuser where uname like '%[%]%'

結果:只有姓名帶「%」的客戶被搜尋出來

四、字元型注入

操作:按姓名模糊查詢,在輸入框輸入:小程' or '1'='1

執行語句:select * from myuser where '小程' or '1'='1'

結果:'1'='1 處可注入

修復建議:把接收引數的乙個單引號變成兩個單引號

五、order by 型注入

操作:排序規則選擇「按年齡降序」,把 value="uage desc" 改為 value="uage desc,case when 1=1 then uid else uage end"

執行語句:select * from myuser order by uage desc;delete from myuser

結果:1=1 處可注入

修復建議:採用陣列對映的方式,如1代表按年齡降序,2代表按年齡公升序

Web 安全漏洞之 SQL 注入

有人的地方就有江湖,有資料庫存在的地方就可能存在 sql 注入漏洞。在所有漏洞型別中,sql 注入可是說是危害最大最受大家關注的漏洞。簡單說來,sql 注入是通過在使用者可控引數中注入sql語法,破壞原有sql結構,達到編寫程式時意料之外結果的攻擊行為。還是以 thinkjs 為例,假設我們寫了如下...

SQL注入漏洞

sql注入漏洞曾經是web應用程式的噩夢,cms bbs blog無一不曾受其害。sql注入的原理 以往在web應用程式訪問資料庫時一般是採取拼接字串的形式,比如登入的時候就是根據使用者名稱和密碼去查詢 string sql select top 1 from user where username...

SQL注入漏洞

sql注入,就是通過把sql命令插入到web表單遞交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令,比如先前的很多影視 洩露vip會員密碼大多就是通過web表單遞交查詢字元暴出的,這類表單特別容易受到sql注入式攻擊 sql注入的發生 當應用程式使用輸入內容來構造動態sq...