-
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?이런 문자열 이다. 키는 한자리라고 했으니 브루트 포스를 통하여 플래그를 구한다.
'대회 or IT 일상 > CTF' 카테고리의 다른 글
경북 안동대학교에서 작년에 이어 제 2회 전국 고등학생 사이버 보안 경진대회를 개최합니다. (0) 2020.10.25 경북 안동대학교에서 11월 30일 (토)에 전국 고등학생들을 대상으로 정보보안경진대회를 개최합니다. (0) 2019.10.19