본문 바로가기

ARM아키텍쳐

[ARM] exploit_RTL

ASLR이 꺼진 환경에서 가능한 exploit이다.

 

buf에 128byte를 넣고 더미 데이터 4byte "bbbb"를 넣어준다음에 gop gadget으로 jump를 해준다.

 

처음 jump를 해줄 곳은 0x76e9ad44의 주소이다. pop {r4, pc}를 하면 r4에 (/bin/sh의 주소 -6byte)를 넣어 주고

pc에는 0x76e9ad40의 주소를 넣어준다. 그러면 r4=&(/bin/sh)-6 이되고 pc=0x76e9ad40 이므로 add r0, r4, #6으로 jump를 할 것이다. 이때 r4=&(/bin/sh)-6이므로 add r0, r4, #6의 명령어로 인해 r0=/bin/sh의 주소가 들어갈 것이다.

그런다음 다시 pop {r4, pc}명령어가 실행이 되는데 이때 r4에는 더미 값을 넣어주고 pc에는 system 함수의 주소를 넣어준다. 이때 여기서 필요한 가젯들은 /bin/sh 문자열의 주소와 system함수의 주소이다.

 

 

 system 함수의 주소는 gdb에 break main을 걸어주고 p system 명령어로 구해준다.

 

 

 

/bin/sh 문자열의 주소는 다음과 같이 소스코드를 작성해 준다.

 

 

실행 화면이다. 그런데 진짜 저기에 있을까?

 

 

진짜 존재한다.

 

그럼 우리가 필요한 모든 가젯들이 모였다.

"A"*132

0x76e9ad44=pop {r4, pc}명령어의 주소값

0x76f96b6c=/bin/sh문자열의 주소값

0x76e9ad40=add r0, r4, #6명령어의 주소값

"B"*4=r4에 들어갈 더미값

0x76ea39c8=system함수의 주소값

 

 

 

다음과 같이 RTL_exploit.py로 저장해주면

 

되는것 같다. python 실행 화면에서는 ASLR이 Enable이라고 되어 있지만 ASLR은 작동하지 않는다.

왜저러는지 모르겠다.

'ARM아키텍쳐' 카테고리의 다른 글

[ARM] ROPlevel1  (0) 2020.05.04
[ARM] exploit RTL Chaining  (0) 2020.03.25
[ARM] Hello World!_Part 2  (0) 2020.01.13
[ARM] Hello World!_Part 1  (0) 2020.01.08
[ARM] exploit_ROP  (0) 2019.12.22