SROP 学习笔记

SROP(Sigreturn Oriented Programming)是Erik Bosman在2014年提出的安全技术,涉及信号处理机制和系统调用。攻击者可以伪造Signal Frame,通过sigreturn控制执行流程,实现权限提升。在CTF中,SROP常用于栈溢出漏洞的利用,通过泄露栈地址和构造SROP链来执行任意代码。
摘要由CSDN通过智能技术生成


本文只是学习的记录文章,主要是以CTF wiki为主,然后加上例题讲解。

一、基本介绍

SROP(Sigreturn Oriented Programming) 于 2014 年被 Vrije Universiteit Amsterdam 的 Erik Bosman 提出,其相关研究Framing Signals — A Return to Portable Shellcode发表在安全顶级会议 Oakland 2014 上,被评选为当年的 Best Student Papers。其中相关的 paper 以及 slides 的链接如下:

http://www.ieee-security.org/TC/SP2014/papers/FramingSignals-AReturntoPortableShellcode.pdf

https://tc.gtisc.gatech.edu/bss/2014/r/srop-slides.pdf

其中,sigreturn是一个系统调用,在类 unix 系统发生 signal 的时候会被间接地调用。

二、signal 机制

signal 机制是类 unix 系统中进程之间相互传递信息的一种方法。一般,我们也称其为软中断信号,或者软中断。比如说,进程之间可以通过系统调用 kill 来发送软中断信号。一般来说,信号机制常见的步骤如下图所示:
在这里插入图片描述

1.内核向某个进程发送 signal 机制,该进程会被暂时挂起,进入内核态。(①)

2.**内核会为该进程保存相应的上下文,主要是将所有寄存器压入栈中,以及压入 signal 信息,以及指向 sigreturn 的系统调用地址。**此时栈的结构如下图所示,我们称 ucontext 以及 siginfo 这一段为 Signal Frame。**需要注意的是,这一部分是在用户进程的地址空间的。**之后会跳转到注册过的 signal handler 中处理相应的 signal。因此,当 signal handler 执行完之后,就会执行 sigreturn 代码。(②③)
关于signal handler是什么可以参考https://www.jianshu.com/p/c5205495df2b
在这里插入图片描述

对于 signal Frame 来说,会因为架构的不同而有所区别,这里给出分别给出 x86 以及 x64 的 sigcontext

  • x86
struct sigcontext
{
   
  unsigned short gs, __gsh;
  unsigned short fs, __fsh;
  unsigned short es, __esh;
  unsigned short ds, __dsh;
  unsigned long edi;
  unsigned long esi;
  unsigned long ebp;
  unsigned long esp;
  unsigned long ebx;
  unsigned long edx;
  unsigned long ecx;
  unsigned long eax;
  unsigned long trapno;
  unsigned long err;
  unsigned long eip;
  unsigned short cs, __csh;
  unsigned long eflags;
  unsigned long esp_at_signal;
  unsigned short ss, __ssh;
  struct _fpstate * fpstate;
  unsigned long oldmask;
  unsigned long cr2;
};
  • x64
struct _fpstate
{
   
  /* FPU environment matching the 64-bit FXSAVE layout
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值