본문 바로가기
Security/Pwnable

pwnable.kr [Toddler's Bottle]->[leg]

by J0DEV 2021. 8. 11.
반응형

[leg]

 

소스코드를 보면 흠... r3 r0?? arm??!!

 

ARM이네요

 

소스코드를 보면 key1,2,3의 결과값이 사용자의 입력값이 되면 됩니다.

 

ARM 조사해보니깐 pc(programcouter)의 값이 r0에 남는다고 하네요 (r0가 리턴) 그리고 pc는 사용된 주소의 +4 byte를 가진답니다.

 

힌트로 주어진 asm코드를 보면

 

 

 

 

pc값을 r3에 넣어주고 r3를 r0에 넣어주네요. 그렇다면

key1에서 r0에 8ce4가 들어가겠군요  

 

 

 

 

key 2에서는 pc를 r3에 넣어준후, r3에 #4를 더한 후, r0에 넣어주네요 그렇다면

8d04 + 4 + 4 = 8d0c네요

 

 

 

마지막으로 key 3에서는 lr레지스터를 r3에 넣고 r3값을 r0에 넣습니다.

 

lr은 함수 호출시 리턴될 값이므로

 

메인함수를 보면

 


8d80입니다. 

 

그렇다면 8ce4 + 8d0c + 8d80 = 사용자 입력값이 되면 됩니다. 

 

 

반응형