ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • KERIS 제 4회 정보보안경진대회
    대회 or IT 일상/CTF 2018. 11. 14. 02:56

    KERIS 제 4회 정보보안경진대회 4권역 예선전에서 전국 24위를 하고 대구권역 4위를 했다..


    본선가서는 완전 깨졌지만,,,ㅎㅎ



    ㅎ...ㅎ

    다음번엔 1등을 목표로 ,,,~~!!!



    -------------------------------------------------------------


    Write - Up

    법률, 일반

    위에 10문제는 그냥 구글링만 잘하면 답이 나온다.

    사실 문제도 기억이 안난다..ㅎㅎ

    시스템(PWN)

    시스템 2 - exec (400P)

    처음에 노트북 문제로 vmware의 인터넷이 되지 않아서 2시간 가량 풀지 못했다가 푼 문제이다.
    nc서버로 접속하면 "Which command do you want to execute?"라고 출력된다. ls 명령어로 파일을 확인해보니 flag 파일이 존재하여 cat flag 명령어를 치니 답이 나왔다. 황당한 문제랄까..

    Which command do you want to execute?

    cat flag

    FLAG{Fak3_L0v3_i5_7h3_s3v3n733n7h_n0n-Engli5h_50ng}

    웹(WEB)

    웹 1 - 로그인 (300P)

    웹 사이트에 접속하면 모달로 로그인창을 띄워주고 회원가입 페이지를 띄어준다. 소스보기를 하니 주석으로 처리되어 있는 review.php를 확인 후 접속하면 해당 코드를 알려 준다. 코드를 보면 MySQL 환경의 DB라는 것을 알 수 있게되고 SQL Injection이 가능하다라는 사실을 알게된다. 아쉽게도 코드를 복사해오지 못해서 생략한다.. 

    query : ' or '1'='1

    웹 2 - Puzzle (400P)

    웹 사이트에 접속하게 되면 이미지를 불러 와서 막 잘라서 섞여있는 것을 볼 수 있다.  관리자 모드를 통해 소스를 보면 자바스크립트가 존재하는데 기억상으로는 난독화된 값이 변수에 있었던걸로 기억한다. 그걸 콘솔에 치면 경로가 나오는데 그것을 토대로 자바스크립트를 실행하면 답이나온다. 

    네트워크(NETWORK)

    네트워크 1 - FindMe (300P)


    매우 쉬운 문제였다. 그냥 ctrl + f 키를 눌려 flag를 검색하면 tcp패킷이 나온다. 하지만 flag가 잘린 듯하다. 찾은 패킷을 선택한 후 상단바의 Analysis -> Follow -> TCP Strem 를 눌리면 아래의 사진과 같이 flag가 나오게 된다.



    flag{N3tw0rk_Ch@llenge_SOlv3d!_Congr@tz!!}



    네트워크 3 - Router (500P)


    시소코 라우터의 IOS문제이다. 시스코 보안 네트워크 책을 공부하면서 보던 것들이라서 당황하진 않았지만 시간이 없어서 빠르게 풀었던 문제이다.


    1. 라우터의 기본적인 정보를 확인하고 첫 번째 FLAG{ }를 획득하시오.


    Router> show version

    [+] FLAG1{ C15c0_Pack3t_Tr4c3r_H4ve_U }

    2. 라우터의 이름을 keris2018로 설정하고, enable secret을 keris2018secret으로, enable password를 whoisthewinnerofkeris2018로 설정하는 명령어를 차례대로 입력하고 FLAG2{ }를 획득하시오.

    Router> enable

    Router# configure terminal

    Router(config)# hostname keris2018

    [+] Ok, you set hostname

    Router(config)# enable secret keris2018secret

    [+] Ok, you set enable secret

    Router(config)# enable password whoisthewinnerofkeris2018

    [+] Ok, you set enable password


    [+] FLAG2{ Ev3r_u5ed_itttttt? }

    3. enable shelldp 접속하기 위한 패스워드의 암호화 된 값을 볼 수 있는 명령어를 이용하여 암호화 된 패스워드의 값을 확인하고, 해당 값을 FLAG3으로 입력하시오.

    Router(config)# exit

    Router# show running-config

    enable secret 5 $1$mERr$ATL1hEB9UJOrNnI6iWy.R/

    enable password 7 08364441000A111F171C050A242E3627353E27010E0551510701

    FLAG : FLAG1_FLAG2_encrypt1234

    flag{C15c0_Pack3t_Tr4c3r_H4ve_U_Ev3r_u5ed_itttttt?_08364441000A111F171C050A242E3627353E27010E0551510701}


    역공학(REV)

    역공학 1 - hand-ray (300P)


    어셈블리 파일을 주고 nc서버를 준다. 그냥 간단하게 풀 수 있었던 문제였다. 어셈블리만 읽을 수 있다면,,?

    gdb-peda$ disas main

    Dump of assembler code for function main:

       0x0000000000400686 <+0>: push   rbp

       0x0000000000400687 <+1>: mov    rbp,rsp

       0x000000000040068a <+4>: sub    rsp,0x10

       0x000000000040068e <+8>: mov    rax,QWORD PTR fs:0x28

       0x0000000000400697 <+17>: mov    QWORD PTR [rbp-0x8],rax

       0x000000000040069b <+21>: xor    eax,eax

       0x000000000040069d <+23>: mov    edi,0x400784

       0x00000000004006a2 <+28>: call   0x400520 <puts@plt>

       0x00000000004006a7 <+33>: lea    rax,[rbp-0xc]

       0x00000000004006ab <+37>: mov    rsi,rax

       0x00000000004006ae <+40>: mov    edi,0x400797

       0x00000000004006b3 <+45>: mov    eax,0x0

       0x00000000004006b8 <+50>: call   0x400560 <__isoc99_scanf@plt>

       0x00000000004006bd <+55>: mov    eax,DWORD PTR [rbp-0xc]

       0x00000000004006c0 <+58>: cmp    eax,0x1c0552315

       0x00000000004006c5 <+63>: jne    0x4006db <main+85>

       0x00000000004006c7 <+65>: mov    edi,0x40079a

       0x00000000004006cc <+70>: call   0x400540 <system@plt>

       0x00000000004006d1 <+75>: mov    edi,0x0

       0x00000000004006d6 <+80>: call   0x400570 <exit@plt>

       0x00000000004006db <+85>: mov    edi,0x4007a3

       0x00000000004006e0 <+90>: call   0x400520 <puts@plt>

       0x00000000004006e5 <+95>: mov    eax,0x0

       0x00000000004006ea <+100>: mov    rdx,QWORD PTR [rbp-0x8]

       0x00000000004006ee <+104>: xor    rdx,QWORD PTR fs:0x28

       0x00000000004006f7 <+113>: je     0x4006fe <main+120>

       0x00000000004006f9 <+115>: call   0x400530 <__stack_chk_fail@plt>

       0x00000000004006fe <+120>: leave  

       0x00000000004006ff <+121>: ret    


    End of assembler dump.

    gdb-peda$ x/s 0x400784

    0x400784: "Type your password"

    gdb-peda$ x/s 0x400797

    0x400797: "%d"

    gdb-peda$ x/s 0x40079a

    0x40079a: "cat flag"

    gdb-peda$ x/s 0x4007a3

    0x4007a3: "Wrong..."

    gdb-peda$

    어셈블리를 보면 main+58에서 cmp eat, 0x1c0552315 이 부분은 바로 비교문이다. 사용자가 입력한 값은 eax에  들어가고 0x1c0552315와 비교하여 참이 된다면 flag를 출력한다. 따라서 16진수인 0x1c0552315를 10진수로 변환하면 29381923이 된다. nc서버에 접속하여 29381923을 입력한다면 flag를 출력하게 된다.


    암호학(Crypto)

    암호학 1 - XOR (300P)


    XOR된 문자열을 주고 Key는 한자리라고 한다. $.#%96-&#;b+1b!.-7&;lb1-b/;b$''.+,%b+1b,-6b%--&b'+6*'0l?이런 문자열 이다. 키는 한자리라고 했으니 브루트 포스를 통하여 플래그를 구한다.




Designed by Tistory.