ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [L.O.B] Level 20 - xavius
    Wargame/L.O.B 2022. 11. 14. 00:08
    반응형

    Level 20 - xavius를 풀어보자.

    드디어 마지막이다!!

     

    소스 코드를 보면 다음 Level은 음.. 아마 death_knight일 듯 하다.

    힌트는 remote BOF라고 되어 있다.

    소스 코드가 굉장히 길지만, 필요한 부분만 보도록 하자.

     

    소켓 프로그래밍 코드인데, 버퍼의 크기는 40 바이트이다.

    아래 쪽의 recv를 보면 입력을 256 바이트를 받기 때문에 여기서 overflow가 발생한다.

    <death_knight 소스 코드의 내용>

     

    프로그램을 실행시키보면, 이미 시작 중인 것을 알 수 있다.

    다시 소스 코드를 보면 6666번 포트를 열고 있는 것이 보이는데, 확인을 해보도록 하자.

    netstat 명령어로 현재 네트워크 상태를 확인할 수 있는데, local에 6666번 포트가 LISTEN 상태인 것이 보인다.

    <네트워크 상태 확인>

     

    이번 문제는 힌트에 있듯이 Remote BOF를 해야 하는데, 원리는 알지만 코드 공부가 부족하다.

    특히 Reverse Shell Code를 이용해야 한다.


    [Reverse Shell Code]

    더보기

    Remote Bof를 할 때, 두 가지 쉘 코드가 있다.

    하나가 Bind Shell Code이고, 다른 것이 Reverse Shell Code이다.

     

    먼저 Bind Shell Code는 공격 대상이 되는 서버 쪽에 열려 있는 포트에 공격자가 접속하여 생성하는 쉘이다.

     

    Reverse Shell Code는 말 그대로 반대로 생성하는 쉘이다.

    일반적으로 방화벽은 인바운드에 대한 통제는 하지만, 아웃바운드에 대한 통제를 설정하지 않는다.

    그래서 공격자가 자신 쪽에서 서버를 열고 공격 대상쪽에서 그 포트로 접속을 하게 하는 쉘 코드이다.


    exploit-db에서 Reverse Shell Code를 확인해 그것을 이용해 보았지만, 잘 되지 않았다.

    그래서 Kali의 msfvenom을 이용하기로 했다.

     

    msfvenom을 이용해 linux의 Reverse Shell Code를 python 형식으로 만들었다.

    여기서 LHOST는 Kali의 IP, LPORT는 kali에서 열어둘 Port 번호이다.

    <생성한 리버스 쉘 코드>

     

    이제 생성한 쉘 코드를 이용할 파이썬 파일을 만들어야 한다.

    여기서는 pwntools를 이용해 생성해보도록 하자.

     

    코드의 내용은 pwntools의 기능을 이용하는 것이라 각 기능을 알아야 한다.

    간단하게 설명하자면 페이로드를 작성해 그것을 LOB에 보내 Reverse Shell Code가 실행되게 하는 것이다.

     

    for 문의 경우, RET의 위치를 정확하게 모르기 때문에 Brute Force를 위해 적용한 것이다.

    <파이썬 코드의 내용>

     

    이제 Kali에서 nc를 이용해 쉘 코드를 생성할 때 적용했던 5555번 포트를 열어놓도록 하자.

    그 후 작성한 파이썬 코드를 실행하면, 정확히 RET에 쉘 코드가 들어갔을 때 연결이 되는 것을 확인할 수 있다.

    my-pass를 입력하면 비밀번호가 나타난다.

    <나타난 비밀번호>

     

    이 문제가 마지막이므로, 바로 death_knight로 접속을 해보도록 하자.

    ls로 파일을 확인하니 dropped_item.txt라는 하나의 파일이 있다.

    내용을 보면 토큰을 하나 주며, L.O.B를 모두 해결했다는 것을 알 수 있다.

    <death_knight에 있는 파일의 내용>

     

    이렇게 L.O.B가 끝이 났다.

    앞의 Level들은 구글링을 하면서도, 다른 사람들의 write_up은 웬만하면 찾질 않았다.

    그런데 이번에는 파이썬 코드를 작성하면서 많은 실패가 있었고, 원인을 찾기 위해 이것저것 참고를 많이 했다.

    좀 더 공부해서 다음 wargame 때는 더 수월하게 공격을 할 수 있도록 해야겠다.

    반응형

    'Wargame > L.O.B' 카테고리의 다른 글

    [L.O.B] Level 19 - nightmare  (0) 2022.11.11
    [L.O.B] Level 18 - succubus  (0) 2022.11.10
    [L.O.B] Level 17 - zombie_assassin  (1) 2022.11.10
    [L.O.B] Level 16 - assassin  (0) 2022.11.06
    [L.O.B] Level 15 - giant  (0) 2022.11.06

    댓글

Designed by Tistory.