首页 > 其他分享 >pwn学习-ret2csu

pwn学习-ret2csu

时间:2024-06-04 16:13:49浏览次数:19  
标签:__ rbx libc text gadget ret2csu 学习 init pwn

再上一次学习栈溢出ret2syscall方法时,我们会发现有些gadget不存在,我们只能借用read遗留下来的ebx寄存机调用,这时就可以使用万能gadget,这个万能的gadget存在__libc_csu_init中,由于每个动态链接的程序就有有libc,并且__libc_csu_init用于初始化,所以说几乎每个程序都含有__libc_csu_init,我们使用里面的万能gadget够着ROP Chain

上述中的代码就是万能gadget分步骤的话代码流程如下
第一步

.text:0000000000400716                               loc_400716:                             ; CODE XREF: __libc_csu_init+34↑j
.text:0000000000400716 48 83 C4 08                   add     rsp, 8
.text:000000000040071A 5B                            pop     rbx
.text:000000000040071B 5D                            pop     rbp
.text:000000000040071C 41 5C                         pop     r12
.text:000000000040071E 41 5D                         pop     r13
.text:0000000000400720 41 5E                         pop     r14
.text:0000000000400722 41 5F                         pop     r15
.text:0000000000400724 C3                            retn

第二步

.text:0000000000400700                               loc_400700:                             ; CODE XREF: __libc_csu_init+54↓j
.text:0000000000400700 4C 89 EA                      mov     rdx, r13
.text:0000000000400703 4C 89 F6                      mov     rsi, r14
.text:0000000000400706 44 89 FF                      mov     edi, r15d
.text:0000000000400709 41 FF 14 DC                   call    ds:(__frame_dummy_init_array_entry - 600E10h)[r12+rbx*8]

第三步

.text:000000000040070D 48 83 C3 01                   add     rbx, 1
.text:0000000000400711 48 39 EB                      cmp     rbx, rbp
.text:0000000000400714 75 EA                         jnz     short loc_400700

具体第一步每个参数的值如下

寄存器
rbx 0
rbp 1
r12 对应rdx,调用函数的第三个参数
r13 对应rsi,调用函数的第二个参数
r14 对应rdi,调用函数的第一个参数

我们需要设置rbx为0,rbp为1,然后rdx,rsi,rdi为需要的参数,通过栈溢出成功执行函数后,我们需要传入第二个gadget,就是上述步骤中的第二步和第三步,他会调用我们的想执行的函数,然后将rbx的值加1,将rbx - rbp的值计算,通过结果判断是否跳转到

标签:__,rbx,libc,text,gadget,ret2csu,学习,init,pwn
From: https://www.cnblogs.com/Junglezt/p/18231013

相关文章

  • 强化学习(一) 基本概念和赌博机问题
    文章目录什么是强化学习强化学习的两个基本特征强化学习的其它特征强化学习不同于有监督学习强化学习不同于无监督学习强化学习不同于进化方法强化学习的独特挑战强化学习典例强化学习的要素强化学习的适用范围强化学习学术主线解决强化学习问题的一般框架赌博机两个影......
  • 基于 PyTorch 的 Python 深度学习:注意力机制
    基于PyTorch的Python深度学习:注意力机制深度学习在近年来取得了巨大的进步,而注意力机制(AttentionMechanism)作为其中的一个重要概念,为模型提供了一种捕捉输入数据中不同部分之间关系的能力。在本文中,我们将探讨注意力机制的基本概念,以及如何在PyTorch框架下实现注意......
  • 51单片机学习记录-06-LED点阵屏(74HC595移位寄存器)
    1 74HC595是串行输入并行输出的移位寄存器,可用3根线输入串行数据,8根线输出并行数据,多片级联后,可输出16位、24位、32位等,常用于IO口扩展。2 74HC595原理图上升沿移位SERCLK,上升沿锁存RCLK点阵屏MATRIX函数sbitRCK=P3^5; //RCLKsbitSCK=P3^6; //SRCLKsbitSER=P3......
  • 函数的多返回值、函数多种传参方式 学会啦!继续学习~
    1.函数的多返回值如果一个函数要有多个返回值,该如何书写代码? 按照返回值的顺序,写对应顺序的多个变量接收即可,变量之间用逗号隔开,支持不同类型的数据return#演示使用多个变量,接受多个返回值deftest_return():return1,2,3x,y,z=test_return()print(x)pr......
  • Amazon 如何让机器学习变得值得信赖
    文章目录一、说明二、技术1:隐私保护ML三、添加DP机制的另一个副作用是增加训练时间。四、技术2:联邦学习五、技术3:ML中的公平性一、说明机器学习最近风靡全球。由于所有惊人的结果,公司一直在争先恐后地将数据驱动的决策纳入其流程。鉴于DALLE、StableDiffusio......
  • [Black Watch 入群题]PWN 1
    frompwnimport*fromLibcSearcherimport*#p=remote('node4.buuoj.cn',25986)p=process('./a')context(arch='i386',os='linux',log_level='debug')e=ELF('./a')level_ret_addr=0x08048511bss_add......
  • 6.1-6.3学习笔记
     Linux学习Linux的所有文件均在根目录/下;在Linux中均使用反斜杠/;Linux系统中文件系统的层次结构:    /bin  存放系统的核心命令以及可执行的文件,如cp、cat命令等;    /boot 启动Linux系统所用的文件,如内核文件;    /dev  设备文件,用于访......
  • 适合小白学习的项目1901java体育馆管理系统Myeclipse开发mysql数据库web结构java编程
    一、源码特点java体育馆管理系统是一套完善的web设计系统,对理解JSPjava编程开发语言有帮助采用了java设计,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql,使用java语言开发。java体育馆管理系......
  • 【耗时8个小时整理】硬核集成算法,学习完你会哭着感谢自己!
    纯 干 货目录纯 干 货1、Bagging(自举汇聚法)2、Boosting(提升法)3、Stacking(堆叠法)4、Voting(投票法)5、深度学习集成今天给大家带来的是「集成算法」的全部整理!其实今儿的一些内容比较好理解~集成算法(EnsembleLearning)是一种将多个弱学习器......
  • 【Python数据分析--Numpy库】Python数据分析Numpy库学习笔记,Python数据分析教程,Python
    一,Numpy教程给大家推荐一个很不错的笔记,个人长期学习过程中整理的Python超详细的学习笔记共21W字点我获取1-1安装1-1-1使用已有的发行版本对于许多用户,尤其是在Windows上,最简单的方法是下载以下的Python发行版,它们包含了所有的关键包(包括NumPy,SciPy,matplotlib,I......