Arm Exploit (feat. qemu)
Apr 11, 2024
»
Hacking-Tips
ARM architecture
컴퓨터 ISA 중 하나. 주로 임베디드에 사용됨.
ARM assembly
범용 레지스터
특수 레지스터
Stack Frame
intel architecture와 동일하게 ROP 공격 수행 가능
Debugging Arm binary
- Qemu로 바이너리 실행
# 이 때, -g 옵션으로 디버깅 포트를 열 수 있음
qemu-arm-static -g 31337 ./binary
- gdb remote debugging
gdb) target remote localhost:[port number]
gdb) target remote :[port number]
- Pwntool에서 local arm 실행
p = process(["qemu-arm-static", "-g", "31337", "./binary"])
pause()
이후 동일하게 gdb에서 attach해주면 됨
ROP gadget
gadget 툴인 ROPgadget과 one-gadget 모두 arm에서도 작동함. 다만, intel과는 어셈 자체가 다르기 때문에 익숙해질 필요가 있음.
pop {r0, pc}
: 이 가젯은 r0 레지스터에 값을 로드하고 그 값을 다음 명령으로 반환합니다.pop {r0, r1, pc}
: 두 개의 레지스터에 값을 로드하고 그 중 하나의 값을 반환합니다.pop {r0, r1, r2, pc}
: 세 개의 레지스터에 값을 로드하고 그 중 하나의 값을 반환합니다.ldr r0, [sp], #4; bx lr
: 스택에서 값을 읽어 r0 레지스터에 로드하고 리턴합니다.ldr r0, [sp]; add sp, sp, #4; bx lr
: 스택에서 값을 읽어 r0 레지스터에 로드하고 스택 포인터를 조정한 후 리턴합니다.
이것 외에도 상황별로 알맞은 가젯을 사용해서 사용하면 됨.