• Home
  • About
    • Seokmin.Lee photo

      Seokmin.Lee

      Hello, I am a master's student in the Department of Convergence Security (Samsung Advanced Security) at Korea University.After graduation, I am expected as a security developer or researcher member of Samsung SDS.

    • Learn More
    • LinkedIn
    • Github
  • Posts
    • All Tags

[pwnable.kr]3_bof

30 Nov 2021

첫인상

image

  • 해당 문제는 기존의 flag를 획득하는 문제와 달리 nc(netcat)으로 해당 server에 접근해, flag의 값을 확인하는 문제이다.
  • 두개의 파일을 다운로드 후 문제를 해독하라고 명시되어있기에 다운을 받고 해당 실행파일과, 코드를 분석진행하였다.
    • (window cmd에서 wget 사용하기: https://leesk212.github.io/Window-CMD%EC%97%90-wget%EC%B6%94%EA%B0%80%ED%95%98%EA%B8%B0/)

image

  • bof 디버깅해야하기에 포트포워딩을 설정해주고 linux os에 붙어서 추가적인 진행을 하였다.
    • (sshd 외부 접근 설정: https://leesk212.github.io/Linux-Setting-ssh/)

접근

bof.c 파일 분석

image

  • main에서 0xdeadbeef 값을 인자로 func함수를 호출한다.
  • func함수에서는 main에서 넘겨준 인자를 key라는 변수로 받는다.
  • 또한 overflowme라는 변수에 값을 입력 받은 이후, key가 0xcafebabe와 같은 경우, 해당 시스템의 sh를 실행시킬 수 있는 함수이다.
  • 실행파일을 disas해서 분석을 진행해야한다

bof 파일 리버싱 진행

image

  • func함수에서 두번째 call하는 부분이 gets함수가 실행되는 부분이다.
  • 또한 cmp를 통해서 비교하는 곳이 key값과 비교하는 위치기에 [%ebp+0x8]이 key의 변수가 갖고 있는 값일 것이다.
  • 그렇다면 overflowme의 시작 주소로부터 일정량을 덮어쓰고, key의 변수에 0xcafabebe를 넣으면 overflow가 진행될 것이다.
  • 이때 gets함수를 통해 불러오는 위치가 ebp-0x2c임을 확인할 수 있다.

bof_ex_pic

  • 그렇다면 현재 상태가
    • overflowme -> ebp-0x2c
    • key -> ebp+0x8 임으로
  • 두 변수 사이의 거리는 ebp+0x8 - (ebp-0x2c) = 0x8+0x2c = 0x34이다. (10진수로는 52이다.)
  • 그렇다면 52byte만큼 아무 숫자를 넣고 key값인 0xcafebabe를 넣어주면 될 것이다.

공격진행

  • 이번에도 python을 활용하여 공격을 진행하였다.
  • python -c 를 통하여 덮어 씌울만큼의 52byte의 값을 작성하고 그 뒤, key와 같은 값을 작성을 진행하였다.
  • [python 2.7](python -c 'print "a"*52 + "\xBE\xBA\xFE\xCA"'; cat) | nc pwnable.kr 9000
  • [python 3.x](python -c "print('a'*52+'\xBE\xBA\xFE\xCA')";cat) | nc pwnable.kr 9000

  • 성공적으로 쉘을 획득하게 되었다면 ls-al로 해당 서버의 파일 중 flag가 있는지 확인한다.

image

  • flag가 읽을 수 있는 권한이 있기에, cat flag를 통해 flag 획득 성공!

image

ref

  • https://hackingisly.tistory.com/14
  • https://stfwlg.github.io/archivers/pwnable.kr-_bof_%ED%92%80%EC%9D%B4
  • https://icmp-ycdi.tistory.com/50


pwnable.krsystem-hacking Share Tweet +1