欧美亚洲大片-国产免费成人在线视频-国产成人8x人在线视频软件-日韩亚洲欧美中文字幕-97伦伦午夜电影理伦片-亚洲综合精品视频-曰本女人牲交高潮视频-久久久精品欧美-天天干天天操天天碰-精品国产乱码久久久久久1区2区-黄色一级免费片-在线免费欧美-国产成人精品在线视频-精人妻一区二区三区-香蕉视频2020-综合久久99-欧美日韩亚洲国产综合

十年專注于品牌網(wǎng)站建設 十余年專注于網(wǎng)站建設_小程序開發(fā)_APP開發(fā),低調(diào)、敢創(chuàng)新、有情懷!
南昌百恒網(wǎng)絡微信公眾號 掃一掃關注
小程序
tel-icon全國服務熱線:400-680-9298,0791-88117053
掃一掃關注百恒網(wǎng)絡微信公眾號
掃一掃打開百恒網(wǎng)絡微信小程序

百恒網(wǎng)絡

南昌百恒網(wǎng)絡

Web應用之常規(guī)SQL注入檢測

百恒網(wǎng)絡 2017-07-21 5318

SQL注入或SQLi漏洞指的是攻擊者可以修改從Web應用發(fā)送到數(shù)據(jù)庫的SQL語句。今天,南昌網(wǎng)絡公司小編就來為大家介紹一下Web 應用中常規(guī)SQL注入檢測方法。

首先要說的是SQL注入攻擊可以根據(jù)bug的不同分為不同類別。通常來說,可以按照HTTP響應返回的數(shù)據(jù)種類來區(qū)分注入。如果返回的是類似下面這樣的SQL錯誤,就可以實施基于錯誤的SQLi:

You have an error in your SQL syntax; check the

manual that corresponds to your MySQL server version

for the right syntax to use near ''' at line 1

某些情況下,即使SQL語句中包含錯誤,Web應用也根本不會返回錯誤。這種類型的SQLi通常叫作Blind SQLi,因為從數(shù)據(jù)庫或應用得不到任何錯誤。

此時,通過對比正常請求和惡意請求的HTTP響應之間的區(qū)別,也可以檢測到SQLi是否會影響某些資源。前述區(qū)別可以分為兩種。一種是內(nèi)容長度不同,也就是返回的響應體的內(nèi)容不同。另一種是響應時間不同,比如常規(guī)響應時間是1秒,而惡意響應卻需要5秒。下面來看一段Ruby代碼,這段代碼是可以被SQL注入的:

get "/" do

@config = ConfigReader.instance.config

# 從GET請求中取得book_id參數(shù)

book_id = params[:book_id]

# MySQL連接池

pool = Mysql2::Client.new(

:host => @config['db_host'],

:username => @config['restricted_db_user'],

:password => @config['restricted_db_userpasswd'],

:database => @config['db_name']

)

begin

if book_id == nil

@rs = pool.query "SELECT * FROM books;"

else

# 若找到一個特定的book_id參數(shù)

# 就執(zhí)行以下未加密查詢

query = "SELECT * FROM books WHERE id=" + book_id + ";"

@rs = pool.query query

end

erb :"sqlinjection"

rescue Exception => e

@rs = {}

@error_message = e.message

erb :"sqlinjection"

end

end

如果將一個類似/page?book_id=1'的GET請求發(fā)送給這段代碼中的處理程序,那么數(shù)據(jù)庫就會返回類似前面的錯誤信息。只要發(fā)送像下面這樣檢索MySQL數(shù)據(jù)庫版本的查詢,就可以利用這種基于錯誤的SQLi:

/page?book_id=1+UNION+ALL+SELECT+NULL%2C%40%40VERSION%2CNULL%23

最終的SQL語句會被攻擊者在SELECT * FROM books WHERE id=1后面追加上UNION ALL SELECT NULL, @@VERSION, NULL。Web應用的那個拼接的查詢(query = "SELECT * FROM books WHERE id=" + book_id + ";")之所以不安全,是因為參數(shù)值book_id未經(jīng)輸入驗證就被用于字符串拼接。這種[沒有預處理語句(Prepared Statements)18]的查詢結(jié)果,會使應用面臨SQL注入的風險。

再考慮一種情況。假設前面存在漏洞的代碼除了把底部的一行(@error_message = e.message)刪除之外,其余都相同,那么此時仍然可以被SQL注入攻擊,只不過變成了Blind。

假設你事先并不知道這一點,而想要檢測某個資源是否可以實施SQLi??梢园l(fā)送下面這個GET請求:

/page?book_id=1+AND+SLEEP(5)

然后,經(jīng)過大約5秒鐘,你才會收到HTTP響應。這么長的響應時間意味著該資源存在SQL注入漏洞,因為SLEEP語句被成功執(zhí)行了。

以上內(nèi)容便是南昌網(wǎng)絡公司小編為大家介紹的關于SQL注入的檢測方法,這些只是比較淺顯的SQL注入檢測,想進一步了解這方面知識的朋友,歡迎關注本公司官網(wǎng)動態(tài),更多技術性文章與您來分享。此外,如有需要關于南昌網(wǎng)站建設、微信開發(fā)、手機APP開發(fā)等方面的服務,百恒網(wǎng)絡隨時為您效勞!


400-680-9298,0791-88117053
掃一掃關注百恒網(wǎng)絡微信公眾號
掃一掃打開百恒網(wǎng)絡小程序

歡迎您的光顧,我們將竭誠為您服務×

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務 售后服務
 
售后服務 售后服務
 
備案專線 備案專線
 
×
淮安市| 宜良县| 资溪县| 靖远县| 漳浦县| 济南市| 通化县| 陆川县| 陈巴尔虎旗| 鄱阳县| 南投县| 岳阳市| 东莞市| 徐水县| 怀柔区| 镇江市| 闽侯县| 东乡县| 忻州市| 亳州市| 岢岚县| 南开区| 屯门区| 比如县| 化隆| 上林县| 襄城县| 年辖:市辖区| 自治县| 柘荣县| 丽江市| 分宜县| 巴中市| 四平市| 广丰县| 井研县| 桑日县| 棋牌| 清原| 竹北市| 温泉县|