ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Pwn] Look at me
    CTF write_up/Hack CTF 2019. 9. 24. 22:27

     

    문제를 한번 해결해 보겠습니다.

     

    간단한 입출력 프로그램이네요!

     

     

    NX 보호기법이 작용 중이여서 쉘코드를 넣고 실행 시키는 것은 불가능 할 것 같습니다.

     

    IDA 32bit으로 한번 열어보겠습니다.

     

    중요한 부분은 딱히 없는 것 같고 look_at_me 함수로 들어갑니다.

     

    look_at_me 함수는 아래와 같습니다.

     

    gets함수로 v1변수에 입력을 받고있고 v1변수의 크기는 0x18로 24입니다.

     

    이제 익스코드를 작성해야하는데..

    함수가 923개나 출력이 됩니다.

     

    그 이유를 보니 다음과 같았습니다.

     

    dynamic linked 가 아닌 statically linked 로 되어있습니다.

     

    그래서 모든 함수가 import 되어 있는 것입니다.

     

    ROP 취약점을 일으키기 위해서는 system 함수가 필요하지만 다음과 같이 해당 프로그램에는 system 함수가 없습니다.

     

    함수를 살펴 보던중 처음보는 함수를 확인했습니다.

     

    mprotect함수 : int mprotect (void *addr, size_t len, int prot); 의 기본형을 가지고 있습니다.

     

    기본적인 ROP Exploit은 system 함수를 이용하지만 해당 문제에서는 system 함수가 없기 때문에 mprotect를 이용한 메모리 영역 권한 변조로 ROP Exploit이 가능하다.

     

    또한 NX-bit가 걸려 있어도  mprotect함수를 이용하면 shellcode를 실행 시킬수 있다고 합니다.

     

    주의할 점은 void *addr 이 0x1000 즉, 4096의 배수여야 한다고 합니다.

     

    mprotect의 필요 인자수는 3개 이므로 pppr(pop pop pop ret)을 찾아 보겠습니다.

    또한 필요 인자수 1개인 gets 함수를 이용해야 하기에 pr(pop ret)도 같이 찾아야 할것 같습니다.

     

    objdump -d lookatme | grep -B4 "ret"

     

    pr -> 0x80bb312  

     

    pppr -> 0x80bafb9

     

    pr 과 pppr 을 구했기 때문에 이번에는 gets 함수와 mprotect 함수의 주소를 찾아 보겠습니다.

     

     

    gets_addr = 0x804f120

    mprotect_addr = 0x806e0f0

     

    이번에는 shellcode를 저장할 변수를 찾아야 하는데 고정 주소를 가지는 bss영역을 찾아보겠습니다.

     

    bss_addr = 0x80eaf80

     

    스택영역에 데이터를 넣으면 ASLR 때문에 주소가 변경 되기 때문에 고정주소에 넣는것이 확실합니다.

     

    이제 마지막으로 gets의 v1변수의 크기를 보겠습니다.

     

    0x18 = 24 + SFP[4] +RET[4] 형식입니다.

     

    위의 데이터를 바탕으로  Exploit code를 작성해 보겠습니다.

     

     

    Flag : HackCTF{Did_you_understand_the_static_linking_method?}

    'CTF write_up > Hack CTF' 카테고리의 다른 글

    [Pwn] Yes or no  (0) 2019.12.09
    [Pwn] Gift  (0) 2019.10.25
    [Pwn] RTL_Core  (0) 2019.09.24
    [Pwn] Random Key  (0) 2019.09.24
    [Pwn] 1996  (0) 2019.09.24

    댓글

Designed by Tistory.