iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 19
0
Security

資安隨意分享的30天系列 第 19

Day19 - Basic ARM

  • 分享至 

  • twitterImage
  •  

前言

剛好昨天聽說某單位內部比賽,然後跑來求救XD

有在群組拿到求救的五個題目(都是 ARM in PWN) 和一個Python 沙箱逃逸

所以,昨天整天在看一下 ARM 下怎麼打 PWN (以前只碰過 x86/x64 0.0)

順手有解四個,是說不知道他們比賽哪時結束,所以應該也不會在這邊寫 write up
(( 話說他們跑去問外部的人本身就已經...XD


正文

今天這邊先簡單介紹一下知識


函數調用

函數的第一個到第四個參數會分別保存在 r0 ~ r3 ,剩下的參數由右到左壓入 stack

函數返回值存在 r0

call system call 在 x86 是 int 0x80 ,在 ARM 是 svc 0x80 / svc 0x0

基本 REGISTER 知識

r0 - r3 分別保存函數的第一個到第四個參數
r4 - r9 作為臨時變數
r7 存 syscall number
r13 指向 stack 頂端
r15 指向下一條執行指令的位址
sp(r13) 等於 x86 的 esp
fp(r11) 等於 x86 的 ebp
pc(r15) 等於 x86 的 eip

所以以前打 x86/x64 要 rop 需要控制 eip/rip ,在 ARM 下要去看 pc


basic shellcode

上面講的基本知道後,一般 get shell 都是用: execve('/bin/sh', 0, 0)

ARM 下:

r0 = '/bin/sh'
r1 = 0
r2 = 0
r7 = 11 (syscall number)

svc #0  (調用 syscall)

上一篇
Day18 - DES 小結
下一篇
Day20 - Basic pwntools in ARM
系列文
資安隨意分享的30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言