블로그 이전했습니다. https://jeongzero.oopy.io/
[HackCTF] Simple Overflow ver2
본문 바로가기
워게임/HackCTF

[HackCTF] Simple Overflow ver2

728x90

[HackCTF] Simple_Overflow_ver_2

Date
Tagsreport

1. 문제

7번 Simple_overflow_ver_2 문제에 걸린 보호기법 및 프로그램을 실행시키면 다음과 같다

이번에도 보호기법은 딱히 걸린게 없다

프로그램을 실행시키면 다음과 같다.

  1. Data 입력을 받는다
  1. 해당 버퍼의 주소로 보이는 주소가 나온다
  1. 다시 실행을 할 것인지 묻는다
  1. y를 누르면 다시 입력을 받게되고, 동일한 버퍼의 주소가 나온다
  1. 프로그램을 종료했다가 다시 실행시키면 버퍼의 주소가 다르게 나온다.

6번 문제와 동일한 방법으로 풀면 될 것같다

2. 접근방법

아이다로 코드를 확인해보자

사실 15-24 라인까지는 버퍼의 주소를 출력해주는 부분이고, 29라인은 Again 문자열 출력시 y를 눌르냐 마느냐 에 해당하는 부분이고, scanf를 이용하여 bof를 일으키고, ret 주소를 buf의 시작주소로 변경하는 방식으로 접근하는 6번 문제와 동일하다

3. 풀이

버퍼의 시작주소를 바로 얻기 위해서 코드를 다음과 같이 작성하였다.

  1. 5라인 : recvuntil 을 이용하여 "Data : " 문자열까지 받는다
  1. 6라인 : 버퍼의 주소를 얻기 위해 아무 문자열이나 보낸다
  1. 7라인 : 버퍼의 주소를 얻은 뒤 buf_addr에 16진수로 형변환을 해서 저장한다
  1. 8라인 : Again 문자열 까지 받는다
  1. 9라인 : y를 누른다 (프로그램을 종료하지 않고 y를 누르면 버퍼의 주소는 고정됨)
  1. 10라인 : 다시 recvuntil을 이용하여 Data : 문자열을 받는다
  1. 12~14 : 26바이트 쉘코드 + 쓰레기값114바이트 + 3번에서 얻은 버퍼의 시작주소를 payload에 담는다

4. 몰랐던 개념

6번과 동일하게 쓰레기값과 쉘코드의 순서를 변경하면 왜 안되는지..

728x90

'워게임 > HackCTF' 카테고리의 다른 글

[HackCTF] x64 Simple size BOF  (0) 2020.04.11
[HackCTF] x64 Buffer Overflow  (0) 2020.04.11
[HackCTF] RTL World  (0) 2020.04.11
[HackCTF] poet  (0) 2020.04.11
[HackCTF] Offset  (0) 2020.04.11