eli_ez3r
eli_ez3r
eli_ez3r
전체 방문자
오늘
어제
  • 분류 전체보기 (202)
    • 0x01 끄적끄적 :) (57)
      • Network (5)
      • Security (14)
      • Reversing (2)
      • Forensic (5)
      • Operation System (10)
      • Development (10)
      • Solution (7)
      • 보안 상식 (3)
    • 0x02 Study :) (127)
      • Pwnable (59)
      • Webhacking (56)
      • Reversing (11)
      • Machine Learning (1)
    • 0x03 ETC :) (16)
      • IT Unpacking (5)
      • IT Information (1)
      • Enjoy (4)
      • Etc (6)
    • Admin :) (0)
      • 0x01 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • github.io 블로그 개설

인기 글

태그

  • hacker
  • 공격
  • write
  • 암호
  • 문제
  • LEVEL
  • 과정
  • 패스워드
  • 문제풀이
  • hack
  • webhacking.kr
  • 해킹
  • LOB
  • overflow
  • pwnable
  • 풀이
  • Up
  • 메모리
  • 설명
  • password
  • hacking
  • web
  • 오버플로우
  • 해커
  • buffer
  • 스쿨
  • school
  • hakcing
  • attack
  • BOF

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
eli_ez3r

eli_ez3r

[해커스쿨] FTZ level15 풀이과정
0x02 Study :)/Pwnable

[해커스쿨] FTZ level15 풀이과정

2017. 1. 11. 20:53


2017/01/11 - [Study :)/FTZ] - [해커스쿨] FTZ level14 풀이과정




level14(http://eunice513.tistory.com/59)랑 매우 흡시하지만..  이번엔 check라는 변수가 포인터이다. 이것만 다르고 다 똑같다.

gdb로 파헤쳐보자~



0x38(56byte)만큼 공간 할당하고... 사용자로 부터 입력받은 값을 [ebp-56]에 저장하고..

[ebp-16]의 주소를 eax에 넣어서 , eax에 있는 주소의 접근한 값이 "0xdeadbeef"인지 확인.. 

맞으면 setreuid를 실행...

일단, 사용자로부터 입력받은 값은 [ebp-56]이고, "0xdeadbeef"의 주소가 들어있는 값은 [ebp-16]이니까, 40byte만큼 떨어져있다는것을 확인 할 수 있다.

<main+36>에 BP를 걸고 돌려보자.



사용자로 부터 입력받은 값이 들어가는 [ebp-56]의 주소값은 "0xbffff8a0"

40byte만큼 떨어진곳의 [ebp-16]의 주소값은 "0xbffff8d8"



즉, 우리가 확인해야 되는것은, check라는 변수가 포인터로 선언되었기 때문에, [ebp-16]에 있는 주소값을 참조해서 그곳에 "0xdeadbeef"값이 있는지 확인해야 된다. 

그래서, [ebp-16]("0xbffff8a0")에 있는 주소값을 따라가보니, "0xbffff8f8"이라는 엉뚱한 값이 들어있다. 이곳에 "0xdeadbeef"라는 값이 들어있으면 끝난다.

우린 힌트를 통해서 메인함수 안에 "0xdeadbeef"라는 값이 선언되었음을 알 수 있다. 


<표식 1>


예상대로, main함수가 있는 곳에 "0xdeadbeef"라는 값이 들어있다. 그리고 "0x80483e4"라는 주소이라는 것도 확인 할 수있다.

그렇다면, [ebp-16]에 "0x80483e4"를 집어 넣으면, [ebp-16]을 참조하면 "0xdeadbeef"가 나오기 때문에 해결될 것 같다.


<표식 2>


<표식 2>을 보면 "0x80484b2"라는 주소값을 넣고 있는데, <표식 1>까지의 풀이 흐름으로는 "0x80483e4"를 넣어야 된다. 

<표식 2>에서 "0x80484b2"를 넣은 이유는 필자가 블로깅 할때는 

/home/level15/tmp 안에 attackme파일을 만들어서 분석하고, 실제 공격은 /home/level15안에 있는 attackme 파일을 공격하기 때문에, 주소값이 다른것이다.


저작자표시 비영리 변경금지 (새창열림)
    '0x02 Study :)/Pwnable' 카테고리의 다른 글
    • [해커스쿨] FTZ level17 풀이과정
    • [해커스쿨] FTZ level16 풀이과정
    • [해커스쿨] FTZ level14 풀이과정
    • [해커스쿨] FTZ level13 풀이과정
    eli_ez3r
    eli_ez3r

    티스토리툴바