tmxklab

[Pwnable.xyz] add 본문

War Game/Pwnable.xyz

[Pwnable.xyz] add

tmxk4221 2020. 3. 7. 23:18

1. 문제

nc svc.pwnable.xyz 30002

 

1) 문제 확인

- 세 개의 인자 값을 받을 수 있으며 int형이 아닌 값이 들어오면 프로그램이 종료됨

 

2) 함수 확인

 

 

3) IDA(hex-lay) - 메인 함수

- 18번째 줄 : input값으로 3개의 값을 scanf함수를 통해 받을 수 잇으며 return값이 3이 아니면 무한 루프 종료

- 20번째 줄 : 입력 값으로 받은 3개의 v4, v5, v6를 통해 v7[v6] = v4 + v5

 

4) IDA(hex-lay) - win함수

 

5) 메모리 보호기법 및 파일 정보 확인

64bit elf파일이며 동적 라이브러리를 사용, not stripped되어 있어 심볼 정보가 남아 있음

- NX가 걸려있어 쉘 코드 삽입을 통한 실행 권한이 없음

- Canary가 존재하여 카나리 값 변조시 프로그램 종료(여기서 xor canary가 적용됨)

 


 

2. 접근 방법

ret값을 win함수의 주소로 변조하여 공격하기 위해 v7배열 인덱스를 가지고 장난쳐봄

 

 

1) 스택 구조 확인

+) 디버깅을 통해 확인

- ret주소 값 : 0x7fffffedf58

 

입력 값을 "1 1 13" 준 후 결과 확인

- 1+1의 결과 값이 v7[13] = ret위치에 저장된 것을 확인할 수 있다.

 

2) 결론

  • win함수의 주소 값을 찾아 v7[13]에 대입하여 win함수를 실행

 


 

3. 풀이

1) win함수 주소

- 0x400822이므로 십진수로 하면 4,196,386

- 따라서, v4, v5의 인자 값에 2,098,193을 입력 후 v6에 13을 입력해야 한다.

 

2) 공격 실행

'War Game > Pwnable.xyz' 카테고리의 다른 글

[Pwnable.xyz] free spirit  (0) 2020.03.30
[Pwnable.xyz] grownup  (0) 2020.03.30
[Pwnable.xyz] misalignment  (0) 2020.03.27
[Pwnable.xyz] sub  (0) 2020.03.07
[Pwnable.xyz] welcome  (0) 2020.03.07
Comments