ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • FTZ 15번 Write-up
    표튜터와 함께하는 Pwnable/FTZ Write-up (11~20) 2019. 2. 5. 08:09

    혹시나 이상하거나 잘못된 것이 있다면 댓글 부탁드립니다.


    FTZ 15번이다. 마치 FTZ 14번과 비슷하다고 느꼈겠지만 조금 다르다.

    코드를 보면 이번에는 check가 포인터로 되어있다.

    나머지는 같고 비교문은 check의 주소와 비교하고 있다는 점이 14번과 다르다.

    역시 if문을 참으로 통과하게되면 다음권한으로 "/bin/sh"이 실행되어

    다음단계로 갈 수 있게 되는 구조이다.




    어셈블리어 코드를 보자.

    fgets로 값을 받고나서 ebp-16에 있는 값을 eax에 저장한 뒤

    eax에 있는 4byte를 0xdeadbeef와 비교하는 코드였다.







    0xbfffd718에 eax값이 저장된다는 것을 알았고

    fgets가 45까지지만 우리는 44개의 바이트만을 사용하기 때문에 상관이 없었다. 



    하지만 여기서 주의할 점은 [eax]라는 점이었다. 

    DWORD PTR [eax]임으로 eax에 저장된 주소에 저장된 값을 4byte를 참조하겠다는 의미임으로

    우리는 바이너리 내부 어딘가에 저장되어있는 0xdeadbeaf를 찾아야 했다.

    찾는 방법은 여러가지다 





    나는 비교하는 주소에서 발견했지만 

    objdump -d attackme | grep deadbeef를 하여도 바로나온다!

    이 deadbeef는 주소값이 변하지 않는 영역에 있었다.(BSS영역 또는 코드영역)

    (보통 elf파일에서 .text영역의 시작은 0x8048000부터다) 








    0x080484b2에 0xdeadbeef가 저장되있음을 확인하였고

    이 0xdeadbeef가 저장된 주소 0x080484b2를 [ebp-16] 넣어주면 된다.!






    다음 단계로~~




    반응형

    '표튜터와 함께하는 Pwnable > FTZ Write-up (11~20)' 카테고리의 다른 글

    FTZ 17번 Write-up  (0) 2019.02.05
    FTZ 16번 Write-up  (0) 2019.02.05
    FTZ 14번 Write-up  (0) 2019.02.05
    FTZ 13번 Write-up  (0) 2019.02.05
    FTZ 12번 Write-up  (0) 2019.02.05

    댓글

Designed by Tistory.