python写exploit

python写exploit测试软件漏洞时 个人比较钟爱用 python 来完成 exploit 简单 快速 也见过不少用 perl 来写的 我不喜欢 随便记录一些常用的方法 python 中有个概念叫模块 模块中包含了定义的函数 方便重用 使用模块的语句如下 import 模块名 struct 模块有个很方便的函数 pack 格式如下 struct pack format 参数 将参数内容转换成 fo

测试软件漏洞时,个人比较钟爱用python来完成exploit,简单,快速。也见过不少用perl来写的,我不喜欢。随便记录一些常用的方法。



python中有个概念叫模块,模块中包含了定义的函数,方便重用。使用模块的语句如下:



import 模块名



struct模块有个很方便的函数,pack,格式如下:



struct.pack(format,参数)



将参数内容转换成format中指定的格式。写shellcode时,需要将覆盖地址倒序(little-endian)排列,为了方便,咱们可以使用这个函数。咱们要用到的指定格式是”







0x7ffa4512是通杀windows 2000/xp/2003的jmp esp地址,以它为例:






import struct






struct.pack(‘







溢出测试时,常常需要生成一长串字符串去填充缓冲区,用循环的话比较麻烦。python中直接可以用乘号来操作字符串:






shellcode = ‘\x90’ * 1000






执行后,shellcode的值为1000个\x90。






同时也可以用加号来操作字符串,连接两个字符串的例子如下:






import struct






buffer = ‘A’ * 100






jmpesp = struct(‘







buffer += jmpesp






在python中“+=”与C语言中的“+=”用法一样,buffer += jmpesp等同于buffer = buffer + jmpesp,当然也可以用后者来表示。












ord函数可用于将指定字符转换成ASCIIi码,函数声明如下:






ord(字符)






例:






>>>print ord(‘A’)






65






注意ord函数只接受字符,不能接受字符串。












对读取文件时发生溢出的程序来说,需要生成一个带有测试代码的文件。python提供了方便的文件操作函数。






filename = ‘test’         #定义一个变量,赋值为将要打开的文件名






payload = ‘A’ * 5000  #生成五千个A






f = open(filename,’w’) #以写模式打开文件






f.write(payload)          #将五千个A写入到该文件内






f.close()                        #关闭






执行以上代码后,会在当前目录下生成一个内容为5000个A的、文件名为test的文件。












有时需要对网络程序进行安全性测试,python也提供了socket编程。需要使用socket模板。






import socket






shellcode = ‘A’ * 1000






s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)   #创建一个socket对象






s.connect((“127.0.0.1”, 200))  #连接到127.0.0.1,端口指定为200






s.send(shellcode)                    #发送数据(一千个A)





版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218029.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午8:12
下一篇 2026年3月18日 上午8:13


相关推荐

  • 多模态融合技术综述和应用[通俗易懂]

    多模态融合技术综述和应用[通俗易懂]文章目录多模态技术基础1,多模态融合架构(神经网络模型的基本结构形式)1.1联合架构1.2协同架构1.3编解码架构(自监督)2,多模态融合方法2.1早期融合2.2晚期融合2.3混合融合3,模态对齐方法3.1显式对齐方法3.2隐式对齐方法4,开放数据与资源应用1:多模态摘要(综合多模态信息生成内容摘要)多模态摘要种类多模态表示基础多模态中的注意力机制多模态词表示(用非语言特征:视频、音频调整词语的表示)教学型视频摘要多模态新闻摘要论文Multi-modelSummarizationforAsync

    2022年6月15日
    40
  • 挖矿病毒解决

    挖矿病毒解决1、进程cpu100%watchdog2、解决/tmpnetstat(矿池、鱼池、sup)进程,文件主程序crontab-l计划任务分析脚本3、如何进来的?web日志、log4j、命令、漏洞:dockeryamfastjiosn、邮件、下载恶意软件(doc、rar、恶意源、docker、wget)4、定位如何传播:蠕虫、ssh弱口令、内网ip探测工具、大量exp、Linux本身免密登陆、root高权限程序劫持、sodo5、解决措施下载样本、分析样

    2022年6月12日
    51
  • pycharm的virtualenv、pipenv、conda详解

    pycharm的virtualenv、pipenv、conda详解https mp weixin com s EQZ7urWfK32A wNMbKZjg

    2026年3月27日
    2
  • js解压gzip数据_gzip 压缩

    js解压gzip数据_gzip 压缩微信小程序开发交流qq群173683895承接微信小程序开发。扫码加微信。GZIP压缩,GZIP解压需要用到pako.js文件:下载地址:https://download.csdn.net/download/qq_35713752/10627338使用方法:JS压缩和解压:varpako=require(‘../../utils/pako.min.js…

    2025年9月28日
    4
  • Anaconda安装OpenCV的方法

    Anaconda安装OpenCV的方法笔者最近在学习用 OpenCV 做人脸识别 用的是 python 语言 Anaconda 里面自带的 Spyder 编辑器 但是按照人脸识别的教程安装好 OpenCV 后发现 只是在 Python 解释器中安装好了 OpenCV 也就是在 cmd 命令提示符里面输入 Python 后进入的解释器里才能正常使用 OpenCV 而 Spyder 里是不能用 OpenCV 的

    2026年3月26日
    4
  • 使用HSDB查看类变量的内存布局(5)

    使用HSDB查看类变量的内存布局(5)

    2020年11月20日
    208

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号