程式注入教程集合

2021-08-28 11:47:46 字數 2195 閱讀 2061

遠端執行緒注入dll

遠執行緒注入原理是利用windows 系統中createremotethread()這個api,其中第4個引數是準備執行的執行緒,我們可以將loadlibrary()填入其中,這樣就可以執行遠端程序中的loadlibrary()函式,進而將我們自己準備的dll載入到遠端程序空間中執行。

選loadlibrary 函式原因: 首先,它可以把乙個dll載入記憶體空間,並執行dll初始化函式。 第二,loadlibrary在kernel32.dll中,kernel32.dll的載入基址在每個程序中都是一樣的所以,loadlibrary在每個程序的位址就是一樣的。

注意事項:在dll中,載入視窗命令中,必須用「對話方塊方式」!比如,載入(視窗1,,真)

參考資料:

訊息鉤子注入

訊息鉤子注入原理是利用windows 系統中setwindowshookex()這個api,他可以攔截目標程序的訊息到指定的dll中匯出的函式,利用這個特性,我們可以將dll注入到指定程序中

使用setwindowshookex()之前首先需要將hook的dll 載入到本身的程序中,以此得到dll的模組控制代碼,再使用getprocaddress()得到dll中公開的函式***()的函式位址,最後遍歷出待注入程序的執行緒id,這樣setwindowshookex()就可以利用這些引數進行hook了。

注意事項:訊息鉤子注入需要有視窗

參考資料:

輸入法注入

輸入法注入原理是利用windows系統中在切換輸入法需要輸入字元時,系統就會把這個輸入法需要的ime檔案裝載到當前程序中,而由於這個ime檔案本質上只是個存放在c:\windows\system32目錄下的特殊的dll檔案,因此我們可以利用這個特性,在ime檔案中使用imesetpubstring()注入dll檔案

也可以直接編寫ime檔案在其中使用oadlibrary()函式載入注入的dll檔案

參考資料:

eip注入

掛起目標程序,停止目標程序eip的變換,在目標程序開啟空間,然後把相關的指令機器碼和資料拷貝到裡面去,然後修改目標程序eip使其強行跳轉到我們拷貝進去的相關機器碼位置,執行相關,然後跳轉回來。

修改eid實現**注入的彙編思路如下

suspendthread();

get eip

push ad

push fd

push addressdllfilepath

call loadlibrary

pop fd

pop ad

jmp eip //這個是為了讓程式執行完我們的**之後自己跳轉回去繼續執行

resumethread();

參考資料:

apc注入(應用層)

apc注入的原理是利用當執行緒被喚醒時apc中的註冊函式會被執行的機制,並以此去執行我們的dll載入**,進而完成dll注入的目的,其具體流程如下:

1)當exe裡某個執行緒執行到sleepex()或者waitforsingleobjectex()時,系統就會產生乙個軟中斷(或者是messagebox彈窗的時候不點ok的時候也能注入)。

2)當執行緒再次被喚醒時,此執行緒會首先執行apc佇列中的被註冊的函式。

3)利用queueuserapc()這個api可以在軟中斷時向執行緒的apc佇列插入乙個函式指標,如果我們插入的是loadlibrary()執行函式的話,就能達到注入dll的目的。

注意事項:目標程式必須有執行sleepex()或者waitforsingleobjectex(),否則dll不會載入

參考資料:

記憶體注入

記憶體注入和遠端執行緒注入差不多,不同地方在於這裡將dll整個檔案都寫進了目標程序記憶體中,採用了彙編指令載入dll,呼叫dll函式,但是核心還是使用virtualallocex、writeprocessmemory、createremotethread

注意事項:自己除錯了幾次dll需要黑月編譯

參考資料:超級模組原始碼

iat永久注入

通過新增乙個新節注入,改變pe檔案的大小,將原有的匯入表複製到新節中,並新增自己的匯入表描述符,最後將資料目錄項中指向的匯入表的入口指向新節,生成新的檔案

注意事項:無法注入一些加殼的檔案和自校驗檔案,會生成乙個新的檔案,dll需要黑月編譯

參考資料:

記憶體永久注入

高配版iat永久注入,不僅新增了區段,把dll也寫進了記憶體,採用彙編裝載dll

注意事項:無法注入一些加殼的檔案和自校驗檔案,會生成乙個新的檔案

參考資料:

新or注入教程

記得一年前火狐有一位朋友問,如果乙個站過濾了and和 的話,改怎麼注入啊?當時我隨口說了句 or注入 後來又一次看貼的時候,看到他問我該怎麼利用呢?我就寫了幾個簡單的語句給他,叫他自己變換,他很感激我,還說網上沒有這種方法。我到網上查了查,還真沒有or注入專題呢 or 1 1除外 呵呵,所以,一年後...

SQLmap注入教程

一次sqlmap注入點並且dump出賬號密碼全程 判斷注入點 sqlmap.py u 存在注入url 爆出所有資料庫名字 sqlmap.py u 存在注入url dbs 檢視當前使用賬號 sqlmap.py u 存在注入url current user 1 檢視當前資料庫 sqlmap.py u 存...

php mysql手工注入教程

注入點 x and1 1 返回正確 and1 2返回錯誤 說明存在注入點 order by 11 反悔正確 order by 12 返回錯誤 說明存在11個字段 union select 1,2,3,4,5,6,7,8,9,10,11 看清楚那裡是 13 是讓他報錯用的 也可以用and 1 2 報錯...