SROP基本原理和利用

SROP(Sigreturn Oriented Programming)是一种利用信号处理机制来控制程序执行的技术。通过构造特殊的信号帧,并利用sigreturn系统调用,攻击者可以控制寄存器的值,执行任意代码。本文介绍了SROP的基本原理、信号帧结构(X86和X64)、sigreturn系统调用的使用,以及SROP的利用方法和注意事项。
摘要由CSDN通过智能技术生成

概述

SROP: Sigreturn Oriented Programming ,系统Signal Dispatch之前会将所有寄存器压入栈,然后调用signal handler,signal handler返回时会将栈的内容还原到寄存器。 如果事先填充栈,然后直接调用signal handler,那在返回的时候就可以控制寄存器的值。

资源

1. Framing Signals—A Return to Portable Shellcode

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

PS:SROP的论文,不容易理解,未读。

 2. Sigreturn Oriented Programming (SROP) Attack攻击原理

http://www.freebuf.com/articles/network/87447.html

PS:介绍了SROP的基本原理。

3. Sigreturn Oriented Programming攻击简介

https://www.anquanke.com/post/id/85810

PS:介绍了SROP的基本原理。附带有32位的DEMO。

4. Playing around with SROP

https://x86overflow.blogspot.in/2014/04/playing-around-with-srop.html

PS:32位SROP DEMO

5. Sigreturn Oriented Programming

https://www.slideshare.net/AngelBoy1/sigreturn-ori

PS:介绍了SROP的基本原理

6. 2017 429 ichunqiu ctf smallest(pwn300) writeup

http://anciety.cn/2017/04/21/2017429ctf-smallest-writeup/

PS:64位SROP实例

7. Return to VDSO using ELF Auxiliary Vectors。https://v0ids3curity.blogspot.jp/2014/12/return-to-vdso-using-elf-auxiliary.html。

PS:VDSO的利用,SROP可以利用VDSO。

8. Defcon 2015 Qualifier fuckup

https://github.com/ctfs/write-ups-2015/tree/master/defcon-qualifier-ctf-2015/pwnable/fuckup

此题较难。

SROP原理

原理主要参考上面freebuf和 anquanke的文章,不再赘述。

SROP利用

4.1 Signal Frame

Ubuntu 16.04 64

4.1.1 X86

Sigcontext

x86来说,此数据结构为sigcontext。

大小为80字节,示例:

frame.set_regvalue("eax", SYS_MPROTECT) #125

frame.set_regvalue("ebx", page_text_segment) #0x08048000

frame.set_regvalue("ecx", 0x1000)

frame.set_regvalue("edx", 0x7)

frame.set_regvalue("ebp", page_text_segment)

frame.set_regvalue("eip", INT_80) #0x08048071

frame.set_regvalue("esp", page_text_segment+16)

frame.set_regvalue("cs", 0x23)

frame.set_regvalue("ss", 0x</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值