Pwnstar

HackCTF 0x8번 BOF_PIE 본문

Wargame/HackCTF

HackCTF 0x8번 BOF_PIE

포너블처돌이 2020. 1. 30. 19:05

아홉번째 문제이다.

문제 이름 그대로 버퍼오버플로우인데 PIE가 걸려있는 게 아닐까 생각했다.

 

 

우선 32비트 바이너리이고,

 

역시나 NX와 PIE가 걸려있었다. 

 

때문에 코드 영역을 포함한 모든 영역이 랜덤하게 배치된다.

 

IDA

 

메인 함수에는 누가 봐도 수상한 welcome이란 함수가 있었고,

j0n9hyun이란 함수는 flag를 열 수 있게끔 되어있었다.

 

메인함수가 시작되고 곧장 실행되는 welcome함수는 welcome 함수의 주소를 알려주고, 입력을 받는 형태로 되어있었다.

 

너무 당연하게 0x12 + 0x4 = 22만큼의 dummy 뒤에 j0n9hyun 함수 주소를 줄 수 있을 것 같았는데, PIE 때문에 함수의 base 주소가 매번 실행할 때마다 달라지기 때문에 이 base 주소와, j0n9hyun 함수 offset만 알면 풀 수 있을 것 같다.

이런 식으로 매번 달라지는 base주소 때문에 이 부분의 주소를 가져와서 welcome 함수의 offset만큼을 빼준다면 base 주소가 구해질 것이고 j0n9hyun 함수 offset을 더해준다면  j0n9hyun 함수 주소를 알 수 있을 것이다.

 

welcome 함수 offset = 0x909

 

j0n9hyun 함수 offset = 0x890

 

 

우선 제대로 구해지는 지 확인하기 위해 위와 같이 익스코드를 짜 보았다.

요렇게 주소를 얻어올 수 있었고,

 

'Wargame > HackCTF' 카테고리의 다른 글

HackCTF Unexploitable #1  (0) 2020.04.02
HackCTF 0x9번 Yes or no  (0) 2020.01.31
HackCTF 0x7번 Offset  (0) 2020.01.24
HackCTF 0x6번 Simple_Overflow_ver_2  (0) 2020.01.24
HackCTF 0x5번 x64 Simple_size_BOF  (0) 2020.01.24
Comments