Skip to content

Sigreturn Return Oriented Programming

Ayushman Dubey edited this page May 25, 2020 · 3 revisions

roppy.rop.srop - Create SROP payload

This allows you to create the SROP easily and you only need to give the register and their values.

SigreturnFrame(arch)

This will initialize the SigreturnFrame class.

Only amd64 and i386 arch is supported as of now.

>>> from roppy import *
>>> frame = SigreturnFrame(arch="amd64")

set_regvalue(regs, value)

This will set the value of a provided register.

>>> frame.set_regvalue("rdi", bin_sh)
>>> frame.set_regvalue("rax", 59)
>>> frame.set_regvalue("rip", syscall)

getframe()

Once you'll be done setting the values of the registers, you can get the payload by calling get_frame()

>>> frame.get_frame()
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 @\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00;\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x10@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x003\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

Supported Registers

  • i386: ["gs", "fs", "es", "ds", "edi", "esi", "ebp", "esp", "ebx", "edx", "ecx", "eax", "JUNK", "JUNK", "eip", "cs", "eflags", "JUNK", "ss", "floa"]
  • amd64 : ["uc_flags", "&uc", "uc_stack.ss_sp", "uc_stack.ss_flags", "uc_stack.ss_size", "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", "rdi", "rsi", "rbp", "rbx", "rdx", "rax", "rcx", "rsp", "rip", "eflags", "csgsfs", "err", "trapno", "oldmask", "cr2", "&fpstate", "__reserved", "sigmask"]