System&Write up/Pwnable.kr

[pwnable.kr] Rookiss - fsb

Jubil 2018. 5. 25. 23:59
반응형

[pwnable.kr] Rookiss – fsb

 



 

 

 

 


 

문제는 32bit 바이너리입니다.

 


 

코드를 보면, key8자리 숫자를 가져옵니다. 그리고 alloca라는 함수를 사용해서 스택에 공간을 할당하고 fsb라는 함수를 호출합니다.

 


 

fsb 함수는 이렇게 생겼는데요, 4fsb를 터트릴 수 있고, key를 입력하고 맞추면 쉘을 실행할 수 있습니다.

fsb를 이용해서 key를 가져올 수 있을까요?  일단 한 번 디버깅 해보겠습니다.

 

 

 

alloca 함수 때문에 fsbmain 함수의 스택 공간까지 접근하기는 힘들 것 같습니다.

fsb가 터지는 곳에 bp를 걸고 메모리를 보겠습니다.

 


 

스택에 보면 빨간 동그라미 값을 이용해서 화살표 메모리의 값을 변경할 수 있고, 그 변경한 값에 다시 접근해서 원하는 값으로 변경할 수 있습니다.

 

그냥 printf 함수의 got의 값을 fsb를 이용해서 쉘을 실행하는 부분으로 바꿔주면 되겠네요.

 


 

printf 함수의 got0x804a004입니다.

 



 

어셈으로 보면 쉘을 실행시키는 부분이 *fsb+363이네요.

 

printfgot0x804a004를 메모리에 쓰고 접근한 후 0x804869f를 써줍시다.

어짜피 fsb4번이나 발생하기 때문에 편안하게 해주면 됩니다.

 


 

esp부터의 offset을 구해봅시다.

 


 

1420입니다.

 

%134520836c%14$n

%134514335c%20$n

을 입력해주면 쉘이 실행되겠네요.

 



 



반응형