SROP 32位--Fun with SROP Exploitation

本文详细介绍了32位SROP(System call Return Oriented Programming)攻击,通过一个Ubuntu 16.04环境下的示例程序,阐述了利用SROP进行权限提升的过程,包括控制EAX设置系统调用号、利用Sigreturn执行mprotect系统调用来改变.text段权限,以及执行shellcode。实验中遇到了寄存器设置问题,通过调试解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

本文是这篇文章的笔记:

Fun with SROP Exploitation

https://v0ids3curity.blogspot.jp/2015/06/fun-with-srop-exploitation.html

 

环境:Ubuntu 16.04

程序

nasm -felf32 vuln_s.asm

ld vuln_s.o -melf_i386 -o vuln_s

 

millionsky@ubuntu-16:~/tmp$ gdb ./vuln_s

 

(gdb) shell objdump -d vuln_s

 

vuln_s:     文件格式 elf32-i386

 

Disassembly of section .text:

 

08048060 <vuln>:

 8048060:       83 ec 08                sub    $0x8,%esp

 8048063:       b8 03 00 00 00          mov    $0x3,%eax

 8048068:       31 db                   xor    %ebx,%ebx

 804806a:       89 e1                   mov    %esp,%ecx

 804806c:       ba 00 04 00 00          mov    $0x400,%edx

 8048071:       cd 80                   int    $0x80

 8048073:       83 c4 08                add    $0x8,%esp

 8048076:       c3                      ret    

 

08048077 <_start>:

 8048077:       e8 e4 ff ff ff          call   8048060 <vuln>

 804807c:       31 c0                   xor    %eax,%eax

 804807e:       40                      inc    %eax

 804807f:       cd 80                   int    $0x80

EXP

3.1 思路

主要思路

1. Read返回值控制EAX,设置为sigreturn的系统调用号0x77

2. 栈溢出,Sigreturn执行mprotect系统调用

3. Mprotect将text段设置为RWX

4. 调用漏洞函数

5. 栈溢出,执行shellcode

 

关键点

l read返回值控制EAX,从而控制系统调用号;

l sigreturn可以将栈指向ELF header

l sigretrun可以设置EIP指向INT_80和相应的寄存器,从而执行mprotect;

mprotect将.text段设置为RWX

l ELF header + 0x18的地方为程序入口,即_start;

栈设置在这里,配合ret指令可以让程序重新执行_start;

3.2 实施过程

1. 执行sigreturn系统调用

/*for x86*/

    mov eax,0x77

    int 80h

 

l 栈溢出,覆盖返回地址指向INT_80 = 0x08048071;

l EAX的控制:发送0x77个字节,read返回后EAX即为0x77 

 

EIP: 0x08048076 <vuln+22>:        ret  
NOTE: read读取0x77个字节,执行完

 

char buf[8]

AAAAAAAA

 

Return addr
addr_of_int_0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值