亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

關于SQL注入,你應該知道的那些事

2024-07-21 02:47:18
字體:
來源:轉載
供稿:網友
關于SQL注入,你應該知道的那些事

戴上你的黑帽,現在我們來學習一些關于SQL注入真正有趣的東西。請記住,你們都好好地用這些將要看到的東西,好嗎?

SQL注入攻擊因如下幾點而是一種特別有趣的冒險:

  • 1.因為能自動規范輸入的框架出現,寫出易受攻擊的代碼變得越來越難——但我們仍然會寫差勁的代碼。
  • 2.因為你使用了存儲過程或者ORM框架,你不一定很清楚的是(雖然你意識到SQL注入可能穿透他們,對嗎) 我們在這些保護措施之下編寫的代碼依然是易受攻擊的。
  • 3.通過精心設計的爬取web搜尋易受攻擊站點的自動化工具使這類站點更易遠程檢測出來。而我們依舊在發布它們(譯注:指站點)。

SQL注入攻擊因一個非常恰當的原因而被保留在OWasp(Open Web application Security PRoject 開放Web應用安全項目)的十大隱患列表中第一位——它特別常見,非常容易利用,而且影響十分劇烈。一個很微小的注入風險經常就能使整個系統中的所有數據都被泄漏——而我將要展示給你如何運用大量不同的技術自己來這樣做。

我幾年前寫《the OWASP Top 10 for .NET developers》時展示過如何防范SQL注入攻擊,所以我不會專注在這些,這都是漏洞利用。受夠了那些無聊的防御工具,讓我們來攻擊別的東西。

如果我們能攻破查詢內容,你們的數據就都是我們的了

讓我們對讓SQL注入攻擊成為可能的原因做一個快速概括。簡而言之,這就是輸入查詢并解密數據。讓我把所說的可視化給你:比如說你有一個包含有類似于“id=1”之類的字符串參數的URL,容納后那個參數通過如下方式構造了一個SQL查詢。

這整個URL可能和這個東西看起來很像:

這是挺基礎的東西,而當你能掌控鏈接中的信息并改變傳遞給查詢的值時會變得有趣。好了,把1變成2會給你另一個你期待的東西,但是如果你這樣做呢?

http://widgetshop.com/widget/?id=1 or 1=1

那可能在數據庫服務器中存留成這樣的:

1SELECT * FROM Widget WHERE ID = 1 OR 1=1

這告訴我們的是數據沒有被凈化——在上例中ID應該只是一個整數但“1 OR 1=1”的值也被接受。更重要的是,因為數據只是簡單地被添加到查詢中,它能夠改變語句的功能。這個查詢將能夠選擇所有的記錄而不是單個記錄,因為”1=1″語句是恒成立的。

或者,我們可以通過把“or 1=1”改成“and 1=2”來強制頁面不返回任何記錄,因為它一直都不成立所以沒有結果返回。在這兩個可選的方案中我們能方便地確定程序是否受注入攻擊威脅。

這是SQL注入攻擊的本質——通過不被信任的數據巧妙地操縱查詢的執行——而在開發者做這樣子事時發生。

123query = "SELECT * FROM Widget WHERE ID = "+ Request.QueryString["ID"];//Execute the query...//執行查詢...

當然他們做的是將不被信任的數據參數化,但本文中我不會過多敘述(如果想要了解防范措施,轉回part one of my OWASP series),而將更多談論如何發動攻擊。

好了,于是背景部分介紹了如何展示SQL注入風險存在,但你能拿它怎么辦?讓我們開始探尋一些普遍的注入模式。

抽絲剝繭:合并基于查詢的注入

讓我們舉個例子,表示我們想要返回一堆記錄的頁面,在這里是一個有一堆帶有“TypeId”1的小東西的URL。像這樣:

http://widgetshop.com/Widgets/?TypeId=1

頁面上的結果會像這樣:

我們會期待這個查詢進入到數據庫時變成像這樣的東西:

1SELECT Name FROM Widget WHERE TypeId = 1

但是如果我們能應用我上述描繪的,也就是說我們可能能夠給查詢字符串中的數據添加SQL,我們可能會做出這樣的東西:

http://widgetshop.com/Widgets/?TypeId=1 union all select name from sysobjects where xtype=’u’

然后它將產生一個如下的SQL查詢:

1SELECT Name FROM Widget WHERE TypeId = 1 union all select name from sysobjects where xtype='u'

現在記好了系統對象表列舉數據庫中所有對象,而在這個例子中我們用 xtype “u” 來篩選這個表,換言之,用戶表。

當一個注入風險存在的時候將會有如下的輸出:

這就是叫做合并基于查詢的注入攻擊,就像我們剛才簡單地像原始結果添加一項,它直接到了HTML輸出中——簡單吧!既然我們已經知道有一個數據表叫“User”,我們可以做這樣的事:

http://widgetshop.com/Widgets/?TypeId=1 union all select passWord from [user]

如果數據表中“user”不被中括號括起來,考慮到“user”這個詞在數據庫看來有其他含義,SQL服務器會變得不易控制。不管怎樣,這是它返回的:

當然,UNION ALL語句只在第一個SELECT語句和第二個有相同的字段時起作用。這很容易被發現,你只需試試一些“union all select ‘a’”,如果它查詢失敗就試試“union all select ‘a’, ‘b’”之類的,以此類推。根本上你是在不斷猜測列數直到你構造的查詢發揮作用。

我們可以繼續研究這個方面并揪出各種數據,但還是學習下一種攻擊方式吧。有時一個基于合并查詢的注入不會發揮作用,與輸入格式、查詢中添加的數據甚至結果如何顯示都有關。為了繞開它我們需要變得更有創造性一些。

讓程序自己泄密:基于錯誤信息的注入

http://widgetshop.com/widget/?id=1 or x=1

等一下,這不是一個合法的SQL語句,那個“x=1”不會被處理,至少在沒有一個叫做x的列時不會被處理。那么它不會拋出一個異常嗎?嚴格地說,事實上你將會看到像這樣的異常:

這是一個asp.net的錯誤,而其他的框架也有類似的樣式。但是重要的是這些錯誤信息暴露了內部的實現方式,換言之,這告訴我們數據庫中沒有叫做“x”的字段。為什么這很重要?從根本上說,這是因為你一旦確立了一個應用程序在泄漏SQL異常,你就可以做這樣的事:

http://widgetshop.com/widget/?id=convert(int,(select top 1 name from sysobjects where id=(select top 1 id from (select top 1 id from sysobjects where xtype=’u’ order by id) sq order by id DESC)))

這有好多需要吸收理解,我等會將回來詳細解釋。更重要的是通過那條語句你能夠在瀏覽器中得到這樣的結果:

現在我們得到了,我們已經發現那數據庫里有一個表單叫做“Widget”。你將經常能看到這中注入攻擊因依賴于數據庫內部的錯誤而被稱作“基于錯誤信息的注入”。讓我們解構URL中的這個查詢:

12345678convert(int, (select top 1 name from sysobjects where id=(select top 1 id from (select top 1 id from sysobjects where xtype='u' order by id) sq order by id DESC)))
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人黄色小视频| 91高清视频在线免费观看| 日韩精品免费在线| 欧美成人黑人xx视频免费观看| 亚洲人在线视频| 亚洲的天堂在线中文字幕| 91sao在线观看国产| 久久国产精品久久久| 欧美激情图片区| 亚洲国产小视频在线观看| 欧美一区二区视频97| 国产精品电影观看| 欧美整片在线观看| 69国产精品成人在线播放| 欧美黄色性视频| 精品欧美aⅴ在线网站| 韩国19禁主播vip福利视频| 精品香蕉在线观看视频一| 亚洲第一综合天堂另类专| 日韩麻豆第一页| 日韩在线观看av| 日本中文字幕成人| 91国产在线精品| 国产日韩综合一区二区性色av| 久久这里有精品视频| 亚洲视频在线观看视频| 日韩欧美在线国产| 懂色av中文一区二区三区天美| 国产午夜一区二区| 亚洲欧美激情另类校园| 亚洲男人天堂网站| 久久久亚洲国产| 日韩国产欧美区| 亚洲精品成人免费| 国产精品尤物福利片在线观看| 性色av一区二区三区在线观看| 4438全国亚洲精品在线观看视频| 日韩一区二区在线视频| 国产aⅴ夜夜欢一区二区三区| 久久99精品久久久久久青青91| 日韩中文有码在线视频| 91中文精品字幕在线视频| 久久久久久久久国产| 亚洲a在线观看| 精品久久久久久亚洲精品| 国产成人一区二区在线| 欧美专区在线观看| 日韩av电影在线播放| 国产精品第100页| 97国产精品人人爽人人做| 97国产在线视频| 91精品国产综合久久香蕉| 欧美激情va永久在线播放| 亚洲人成在线观看网站高清| 成人免费视频97| 亚洲va久久久噜噜噜| 国产精品永久免费| 久久久国产精品亚洲一区| 91美女福利视频高清| 色综合亚洲精品激情狠狠| xxav国产精品美女主播| 亚洲自拍av在线| 亚洲国产婷婷香蕉久久久久久| 亚洲视频在线免费看| 亚洲国产精品字幕| 97精品欧美一区二区三区| 91久久嫩草影院一区二区| 亚洲欧美日韩区| 视频一区视频二区国产精品| 黑人巨大精品欧美一区二区| 欧美激情2020午夜免费观看| 欧美视频一区二区三区…| 亚洲精品久久久久久下一站| 久久6免费高清热精品| 91国内精品久久| 亚洲精品国产欧美| 国产精品免费看久久久香蕉| 国产日韩欧美在线| 红桃av永久久久| 久久精品电影网| 中文字幕亚洲一区在线观看| 欧美俄罗斯性视频| 精品国产户外野外| 成人激情春色网| 亚洲色图欧美制服丝袜另类第一页| 日韩精品中文在线观看| 精品久久久久久中文字幕一区奶水| 狠狠躁夜夜躁人人爽天天天天97| 久久成人18免费网站| 亚洲午夜精品视频| 97精品在线视频| 国产精品亚洲欧美导航| 国产成人免费91av在线| 668精品在线视频| 国产精品视频久久久| 成人免费视频网| 午夜精品一区二区三区在线视| 成人网在线免费看| 欧美综合在线第二页| 亚洲精品美女久久久久| 欧美日韩国产丝袜另类| 中文字幕在线精品| 久久不射电影网| 中文字幕一区电影| 欧美www视频在线观看| 91av视频导航| 亚洲人成毛片在线播放| 亚洲另类激情图| 亚洲精品色婷婷福利天堂| 韩国精品久久久999| 欧美精品videosex极品1| 亚洲国产第一页| 欧美中文在线视频| 成人福利视频在线观看| 日韩精品丝袜在线| 国产精品久久久久久中文字| 亚洲国产精品网站| 日本成人在线视频网址| 日韩激情在线视频| 欧美色视频日本版| 欧美视频国产精品| 欧美日本亚洲视频| 国产第一区电影| xxxxx91麻豆| 95av在线视频| 亚洲欧美日韩久久久久久| 91免费版网站入口| 精品视频久久久久久| 欧美性猛交xxxx乱大交3| 日本成人精品在线| 一区二区在线免费视频| 成人97在线观看视频| 国产成人啪精品视频免费网| 国产精品99久久久久久白浆小说| 亚洲国产欧美精品| 久久男人av资源网站| 国产视频精品自拍| 欧美激情第一页xxx| 亚洲精品98久久久久久中文字幕| 国产亚洲xxx| 日韩欧美成人区| 亚洲一区二区自拍| 亚洲欧美激情在线视频| 精品亚洲夜色av98在线观看| 久久成人亚洲精品| 国产精品一二三视频| 国产在线精品自拍| 亚洲欧美精品suv| 欧美精品激情在线| 欧美xxxx做受欧美| 成人国产在线视频| 一区三区二区视频| 中文字幕欧美日韩在线| 欧美一级大片在线观看| 国产欧美日韩最新| 91精品国产91久久久久福利| 国精产品一区一区三区有限在线| 2019亚洲日韩新视频| 亚洲视频综合网| 美日韩精品视频免费看| 国产精品美女久久久久久免费| 尤物精品国产第一福利三区| 欧美激情视频在线免费观看 欧美视频免费一| 欧美激情在线视频二区|