ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Pico ctf 2014 rop1
    CTF&Wargame/ETC 2017.01.05 19:46

    바이너리의 소스 코드는 이렇고 환경에서는 ASLR이 걸렸있다.

    ROP를 이용해서 풀 수 있지만 다른방법으로 풀 것이다.



    우선 strcpy() 함수는 char * strcpy(char * dest, const char * src); 이렇게 구성되어 있는데 strcpy() 함수의 리턴 값은 문자열 dest에 대한 포인터이다. 그럼 이 함수를 이용해 문제를 풀어보자 (NX가 걸려있지 않기 때문에 쉘코드가 가능하다. )


    버퍼가 64이기 때문에 72개를 넣어주면

    strcpy() 때문에 EAX에 버퍼 값을 가리키는 포인터 주소가 들어간다.

    EIP도 90909090으로 되어있다.


    현재 EAX레지스터 값을 실행할 수 있으면 쉘코드를 실행할 수 있다는 소리다. 근데 ASLR이 걸려있는데 어떻게 실행할까 call %eax라는 가젯을 이용하면 된다!


    call %eax를 호출하게 되면 현재 EAX값을 EIP에 복사하여 실행할 수 있다.

    가젯을 구했으니


    페이로드 구성은 [쉘코드][나머지 버퍼][eax함수 호출] 직접해보면

    현재 EAX는 쉘코드를 넣은 상태라 \x31\c0\50\68을 가르키고 있다.


    함수 내부로 들어가게되면 EIP가 EAX와 같아 진걸 볼 수 있다.


    이렇게 쉘코드를 실행할 수 있게된다.










    'CTF&Wargame > ETC' 카테고리의 다른 글

    codegate 2013 vuln200  (0) 2017.01.08
    Layer7 ctf 2015 IhaveLongDariYouHaveShotDari  (6) 2017.01.07
    Pico ctf 2014 rop1  (0) 2017.01.05
    ropasaurusrex  (0) 2017.01.04
    NEWSECU CTF Write-up  (0) 2017.01.01
    holyshield ppc  (0) 2016.12.24

    댓글 0

Designed by Tistory.