달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

'uaf'에 해당되는 글 1

  1. 2017.07.09 [문제풀이] pwnable.kr - uaf
2017. 7. 9. 15:13

[문제풀이] pwnable.kr - uaf Wargames/pwnable.kr2017. 7. 9. 15:13



※ 사전지식 


이번 문제는 Use-After-Free 취약점(이하 UAF 취약점)과 관련된 문제였다. 따라서 문제풀이를 하기 전에 UAF 취약점에 대한 설명을 간단히 하고 넘어가겠다. 


해당 취약점은 Heap 영역에서 발생하는 취약점으로 간단히 말하면 사전에 할당된 Heap 메모리가 프리되고 이를 그대로 할당받을 수 있어서 발생되는 취약점이다. Heap 메모리를 할당한 뒤 해제할 때 메모리 해제 함수를 사용하는데 이 함수는 이를 해제된 힙 리스트에 삽입할 뿐(물론 다른 기능도 수행한다) 내용을 초기화하지 않고 재할당 요청시 그대로 반환한다. 게다가 기존에 명시된 참조 방식으로 그대로 참조도 가능하다. 


캡쳐나 다른 설명없이 너무 글로만 설명해서 확 와닿지 않을 느낌이 든다. 

따라서 간단히 개념을 설명하기 좋을 사이트를 아래에 별도로 명시해놓겠다.  :)


사전지식 끝!



※ 문제풀이


해당 문제는 아래와 같은 화면으로 나타난다. 




화면에 나타난 각 번호들을 선택하면 그에 맞는 행위를 한다. 간단히 해당 영역에 있는 소스코드를 확인해보자. 



각 번호마다 하는 행위는 위와 같다. 


1번은 각 클래스의 멤버함수를 호출하고 

2번은 내가 전달한 파라미터를 기반으로 데이터를 읽어온다.

3번은 할당한 클래스를 삭제한다. 


자 그럼 대충 문제가 어떤식으로 흘러갈지 눈에 들어오지 않는가!?


기존 UAF 취약점 정의에 따라 사용하고 제거한 뒤 재사용하는 흐름에 따라가면 된다. 

여기에서는 가상함수 테이블을 저장했었던 곳을 변경하여 답을 얻을 수 있다. 




짜잔~


문제풀이 끝!






Reference

[1] Use-After-Free, http://revers3r.tistory.com/156

'Wargames > pwnable.kr' 카테고리의 다른 글

[문제풀이] pwnable.kr - asm  (0) 2017.07.09
[문제풀이] pwnable.kr - unlink  (0) 2017.07.09
[문제풀이] pwnable.kr - mistake  (0) 2017.07.09
[문제풀이] pwnable.kr - leg  (0) 2017.07.09
[문제풀이] pwnable.kr - input  (0) 2017.07.09
:
Posted by einai