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 블로그 개설

인기 글

태그

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

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
eli_ez3r

eli_ez3r

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

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

2017. 1. 11. 20:48


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




소스코드를 보니 long형 변수 i가 존재하고, i의 값이 0x1234567이 아니면 경고 메시지가 출력하는걸 볼 수 있다. 즉, i라는 변수의 값을 체크해서 오버플로우됬는지 판단하는 보안코드라고 볼 수 있겠다.

하지만, 이는 너무 단순한 보안코드이다. 그러면 i형 변수가 가리키는 버퍼에 0x1234567을 넣으면 되지 않을까? 공격하자!



gdb로 분석해보면, 일단 0x418(1048)만큼 공간을 확보하고, 0x1234567을 [ebp-12]에 저장한다.

그리고 strcpy로 argv[1]인자를 복사하고나서 <main+79> 부분에  ebp-12의 값이 0x1234567의 값으로 잘 저장되어 있는지 체크한다.

그럼 우리는 앞서 했던 방식과 똑같은 방법으로 [ebp-12]주소에 0x1234567만 넣어주면 될거 같다.

그러면 일단 [ebp-12]의 주소를 찾아보자.



strcpy함수를 실행하고 나서 바로 다음인 <main+76>에 브레이크 포인트를 걸고 대충 아무값인 "AAAAAAAAAA"값을 인자로 넣어서 실행시켜보자.



브레이크 포인트가 걸리고 나서 ebp-12를 보니 주소값이 "0xbfffe33c"이다. 



"AAAAA..."의 문자가 들어가는 메모리주소는 "0xbfffdf30"이다. 계산기로 0xbfffe33c에서 0xbfffdf30을 빼보니 1036이라는 값이 나왔다. 즉. 처음 문자가 들어가는 메모리주소부터 1036번째에 0x1234567을 넣으면 되겠다.                      

정리하면 총 1048byte의 공간을 할당 받고, 1036byte+0x1234567(4byte)+8byte+SFP(4byte)+RET(4byte).

`python -c 'print "A"*1036+"\x67\x45\x23\x01"+"A"*12+"쉘코드가 들어간 환경변수 주소"

자 우리가 생각한데로 되는지 해볼까?  (쉘코드 들어간 환경변수 주소 : 0xbffffeb6)

환경 변수에 대한 설명은 ☞ http://eunice513.tistory.com/56




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

    티스토리툴바