如何用C編寫和編譯Shellcode

2021-02-14 木星安全實驗室
; https://github.com/mattifestation/PIC_Bindshell/blob/master/PIC_Bindshell/AdjustStack.asm
; AlignRSP is a simple call stub that ensures that the stack is 16-byte aligned prior; to calling the entry point of the payload. This is necessary because 64-bit functions; in Windows assume that they were called with 16-byte stack alignment. When amd64; shellcode is executed, you can't be assured that you stack is 16-byte aligned. For example,; if your shellcode lands with 8-byte stack alignment, any call to a Win32 function will likely; crash upon calling any ASM instruction that utilizes XMM registers (which require 16-byte); alignment.
AlignRSP PROC push rsi ; Preserve RSI since we're stomping on it mov rsi, rsp ; Save the value of RSP so it can be restored and rsp, 0FFFFFFFFFFFFFFF0h ; Align RSP to 16 bytes sub rsp, 020h ; Allocate homing space for ExecutePayload call main ; Call the entry point of the payload mov rsp, rsi ; Restore the original value of RSP pop rsi ; Restore RSI ret ; Return to callerAlignRSP ENDP

相關焦點

  • 利用python免殺cs shellcode
    0x02 概述1、什麼是shellcode在維基百科中這樣解釋道:在黑客攻擊中,shellcode是一小段代碼,用於利用軟體漏洞作為有效載荷。它之所以被稱為「shellcode」,是因為它通常啟動一個命令shell,攻擊者可以從這個命令shell控制受損的計算機,但是執行類似任務的任何代碼都可以被稱為shellcode。
  • 如何在 Ubuntu/Debian Linux 上編寫、編譯和運行一個 C 程序
    你是如何在 Linux 上使用 C 編寫你的程序的?它確實是非常簡單的,由三個簡單的步驟組成。步驟 1: 編寫你的 C 程序,並使用一個 .c 的擴展名進行保存。例如,my_program.c 。這只是如何在 Linux 中編譯和運行 C 程序的簡要總結。假設你是 C 語言或 Linux 系統的新手,我將仔細演示這些步驟,以便你能在 Linux 環境中舒服地編寫 C 程序。
  • 利用WinRM實現內網無文件攻擊反彈shell
    Win7系統中卻默認安裝此WinRM服務,但是默認為禁用狀態,Win8系統和Win10系統也都默認開啟WinRM服務。WinRM的好處在於,這種遠程連接不容易被察覺到,也不會佔用遠程連接數!0x01:環境準備WinRM會用到5985、5986 埠,所以防火牆必須做開放處理。
  • Python和C/C++交互的幾種方法總結
    來源:http://code.replays.net/201706/95155.htmlPython程式語言Python 是一種面向對象、解釋型電腦程式設計語言,由Guido van Rossum於1989年底發明,第一個公開發行版發行於1991年。Python語法簡潔而清晰,具有豐富和強大的類庫。
  • 我是如何實現鴻蒙系統編譯、燒錄不跨平臺的?
    雖然 vscode有個 DevEcoDevice 插件,但是網絡不好我始終也安裝不完全,沒法用。所以只好自己動手,Linux 下敲命令來燒寫吧。下面和我一來起操作,簡單低級的東西可以直接略過,轉載請註明出處及作者。
  • 被雙十一套路所傷的,請到這裡取暖——「 用 C語言編寫自己的程式語言 」
    編譯器編譯器的作用是將我們寫好的 c 語言的代碼翻譯成電腦能夠直接運行的程序。不同 的作業系統安裝編譯器的過程也是有差別的。另外編譯和運行 C 外外使用程序需要知道一些基本的命令行操作,本課程不會教你怎麼使用命令行。如果你從來沒聽說過命令行,你可以到網上搜一些教程看看。在 Linux 上,你可以通過下載並安裝開發包獲得 c 語言的編譯器。
  • keil c語言編程常見問題解析(一)
    C:\8051\MANN.C 程序過程中由於main.c 用了指令#i nclude 「beep.h」,但卻找不到所致解決方法編寫一個beep.h 的包含檔並存入到c:\8051 的工作目錄中 4 Error 237:』LedOn』:function already has a body
  • 當然是用官方的MS Terminal和VS Code了
    選自 Real Python作者:Jon Fincher機器之心編譯在 Windows 上怎樣做 Python 開發?是像大神那樣使用純文本編輯器,還是用更加完善的 IDE?到底是用自帶的命令行工具,還是需要裝新的 Terminal?
  • 乾貨| 網站滲透總結之Getshell用法大全
    Getshell分為進管理員後臺Getshell和不進後臺Getshell,本文主要總結常見進後臺Getshell和部分。
  • C語言怎麼編寫8051單片機音樂播放程序
    C語言怎麼編寫8051單片機音樂播放程序#define uchar unsigned char //定義一下方便使用
  • 超詳細的Shell中特殊字符的用法總結大全
    超詳細的Shell中特殊字符的用法總結大全 Linux下無論如何都是要用到shell命令的,在Shell的實際使用中,有編程經驗的很容易上手,但稍微有難度的是shell裡面的那些個符號,各種特殊的符號在我們編寫Shell腳本的時候如果能夠用的好,往往能給我們起到事半功倍的效果,那麼這些特殊符號所代表的意思你知道嗎
  • 【程序】C語言怎麼編寫8051單片機音樂播放程序
    C語言怎麼編寫8051單片機音樂播放程序#define uchar unsigned char //定義一下方便使用
  • 單片機c語言教程:建立你的第一個KeilC51項目
    隨著單片機技術的不斷發展,以單片機C語言為主流的高級語言也不斷被更多的單片機愛好者和工程師所喜愛。使用C51肯定要使用到編譯器,以便把寫好的C程序編譯為機器碼,這樣單片機才能執行編寫好的程序。
  • 攻防禮盒:哥斯拉Godzilla Shell管理工具
    點擊 管理-添加生成所需的webshell,哥斯拉支持jsp、php、aspx等多種載荷,java和c#的載荷原生實現AES加密,PHP使用亦或加密。生成時需要記住自己的生成配置用以連結時用。一些特性為什麼我放著冰蠍、蟻劍還有什麼天蠍不用而要用你的哥斯拉?
  • 學會這些 shell 小技巧,我就愛上 Linux 了
    three3你看,花括號中的每個字符都可以和之後(或之前)的字符串進行組合拼接,注意花括號和其中的逗號不可以用空格分隔,否則會被認為是普通的字符串對待。{c,cpp} src/# 將所有 .c 和 .cpp 為後綴的文件移入 src 文件夾輸入路徑名稱太麻煩用cd -返回剛才待的目錄,直接看例子吧:$ pwd/very/long/path$ cd # 回到家目錄瞅瞅$ pwd/home/labuladong
  • C/C+編程筆記:在C+中如何調用C語言的代碼?你可以這樣做
    比如在C文件中存在一個函數func_c(), 該文件與C++的工程混編在一起時,可以直接在C++中調用C文件中的func_c();不需要做任何額外處理。 不過在C中,不可以調用C++的接口,也不能直接調用C語言的一些API,否則編譯會出錯。這個時候呢,就需要我們今天的主角:extern "C"了!
  • 【如何快速的開發一個完整的iOS直播app】
    解釋性語言執行和編譯語言執行的區別:腳本語言:屬於解析語言,必須通過解釋器解析,將其一條條的翻譯成機器可識別的指令,並按程序順序執行。腳本語言是解釋執行的,執行文件是文本shell解釋器:shell是一個命令行解釋器,相當於windows的cmd,處於內核和用戶之間,負責把用戶的指令傳遞給內核並且把執行結果回顯給用戶.bash: bash是一種shell解釋器版本,shell有很多種版本,就像人,也分不同國家的人。