Pwnstar
HackCTF 0x8번 BOF_PIE 본문
아홉번째 문제이다.
문제 이름 그대로 버퍼오버플로우인데 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