저번 해캠때도 비슷한 브포 문제가 있었는데 출제자 분이 동일했던 것으로 기억한다. (제가 아는 분입니다.)
이번 문제 내용은 이렇다.
import random
import sys
url= ['h','t','t','p','s',':','/','/','x','x','x', '.' 'x','x','/','1','2','3','4','5','6','7']
#url is https://xxx.xx/XXXXXXX
# flag in this site. #guess what !!!!
random.shuffle(url)
for i in range(0,21):
sys.stdout.write(url[i])
sys.stdout.flush()
출력값에서 h t t p s : / / b i t . l y / 을 빼내면 A B C D E F G가 남게 된다.
(이 문제는 단순 브포에다가 bit.ly에 5000번 정도를 접속을 해야 하기 때문에 그냥 문자를 ABCDEFG로 바꾸었습니다.
외부 공개된 CTF문제에서도 빠진 것을 보면, 굳이 그대로 올리는 건 좋지 않은 것 같았습니다.)
저 7개 문자를 가져다가 순열을 만들어서 다 접속해보면 된다.
from itertools import permutations
import requests
a = list(permutations(['A','B','C','D','E','F','G']))
url = "https://bit.ly/"
print(len(a))
for i in range(0, 5041): #4967
print(i)
b = a[i]
b = str(b).replace(",", "")
b = str(b).replace("(", "")
b = str(b).replace(")", "")
b = str(b).replace("'", "")
b = str(b).replace(" ", "")
d = url + b
print(d)
response = requests.post(d)
print(response)
0. 200 응답만 오는 걸 출력하도록 조건문을 추가하는 것이 더 좋다.
1. 돌리다 보면 request에서 오류가 나는 경우가 있는데, 해당 url 다음 번째부터 다시 코드를 돌려주면 된다.
2. 코드가 잘 돌다가 어느 순간부터 403으로만 응답이 오면 bit.ly로 부터 차단된 것이다. 몇 분 기다렸다가 다시 시도해 c주어야 한다.
CTF때, url 하나 접속하고 응답받는데 약 2초정도 걸렸었다. 혼자 돌리는 건 매우 오래걸릴 것 같아서 팀원 2명과 같이 범위를 나누어서 돌렸었는데, 그 중 한분이 구글 콜라보레이터를 알려주시면서 빠르게 코드를 돌릴 수 있었다.
4000개쯤 시도했을 때... 이거 다 돌려도 안나오면 어떡하지 라는 걱정을 했었는데 결국 4967번째에서 찾을 수 있었다.
파일명이 변경되고 실행되고 삭제됨을 알 수 있다. 삭제되었는데 휴지통에서도 찾을 수는 없었다.
파일명이 변경되기 이전을 살펴보았다.
크롬으로 다운로드 되었다.
그래서 크롬 방문기록과 다운로드 기록을 확인하였는데, 해당 파일은 찾을 수 없었다.
여기서 문제를 다시 읽고, 스피어 피싱 = 메일임을 확인했다. 방문기록에 eM Client가 있음을 확인했고, 작년 예선에서 풀어보았기 때문에 해당 프로그램이 이메일 프로그램임을 알고 있었다. 먼저 내 컴퓨터에 eM Client를 설치하고, Appdata\Loaming\ 에 있는 eM Client 파일을 통채로 복사해서 내 컴에 그대로 덮어주고 프로그램을 실행하면 메일 내용을 확인 할 수 있다.
메일 내용에서 pdf첨부파일을 구할 수 있고, 열어보면 다운로드 링크를 준다.
다운로드 링크를 통해 photoshopsetup.exe을 다운로드 받을 수 있다.
여기까지 바이러스를 찾는 과정.
다음은 암호화된 파일을 복호화해야한다. 제공된 힌트 3번째 = "파일은 AES로 암호화되었다."
위 블로그 글에 나온대로 풀려고 했는데, 주어진 zip파일은 파일 크기 부분이 정상이 아니었기 때문에, data부분의 정확한 크기를 알 수 없었습니다. 그래서 1바이트씩 줄여가며 시도할 생각으로 0000이 끝나는 부분을 기점으로 추출해서 zip파일을 만들고 파이썬 코드로 압축 풀기를 시도했습니다.
The oldest SQL Injection Vulnerability. The flag is the vulnerability ID.
flag : CVE-2000-1233
SQL Trivia 2
20
In MSSQL Injection Whats the query to see what version it is?
flag : SELECT @@version
Sea Quail
20
A domain-specific language used in programming and designed for managing data held in a relational database management system, or for stream processing in a relational data stream management system.
flag : SQL
64 Characters
20
A group of similar binary-to-text encoding schemes that represent binary data in an ASCII string format by translating it into a radix-64 representation.
flag : base64
With Some Milk
20
A small piece of data sent from a website and stored on the user's computer by the user's web browser while the user is browsing.
flag : cookie
Beep Boop
20
A standard used by websites to communicate with web crawlers and other web robots. The standard specifies how to inform the web robot about which areas of the website should not be processed or scanned
flag : robots.txt
Recon
Unexpected intruder
50
occurring in Chicago, Illinois, United States, on the evening of November 22. There was an interruption like nothing we had ever seen before.
What was the name of the Intruder?
flag : maxheadroom
Crypto
Alphabet Soup
125
MKXU IDKMI DM BDASKMI NLU XCPJNDICFQ! K VDMGUC KW PDT GKG NLKB HP LFMG DC TBUG PDTC CUBDTCXUB. K'Q BTCU MDV PDT VFMN F WAFI BD LUCU KN KB WAFI GDKMINLKBHPLFMGKBQDCUWTMNLFMFMDMAKMUNDDA
처음에 카이사르로 돌려봤는데 나오질 않아서 치환암호인것 같았다.
https://quipqiup.com/ 자동으로 치환암호를 풀어주는 이 사이트에 clue 없이 돌린다음에 WAFI=FLAG 라는 clue를 넣어주어 완벽한 해독문을 얻을 수 있었다.
flag : DOINGTHISBYHANDISMOREFUNTHANANONLINETOOL
scripting/coding
WebCipher
300
To verify that only computers can access the website, you must reverse the Caesar cipher There are a list of possible words that the cipher may be here
https://challenges.neverlanctf.com:1160
이게 왜 여기있고, 왜 300점이나 되는지 모르겠는 이상한 문제
페이지에 접속하면 문자열 하나와 입력폼 하나가 있다.
문자열을 카이사르로 돌리면 accelerator 가 나오는데 이를 입력해주면 플래그가 나온다.
사람이 푸는게 아니라 코드를 짜서 풀어야 하는 문제인건가...?
Binary
Binary 2
200
Our lead Software Engineer recently left and deleted all the source code and changed the login information for our employee payroll application. Without the login information none of our employees will be paid. Can you help us by finding the login information?
***Flag is all caps
.net이다. dotpeek으로 까보면 된다.
바로 flag를 확인할 수 있다. 하나하나 디코딩하기는 귀찮으니 나와있는 id와 pw을 입력해 flag를 출력하게 하면 된다.
flag : flag{ST0RING_STAT1C_PA55WORDS_1N_FIL3S_1S_N0T_S3CUR3}
Web
Cookie Monster
20
It's a classic https://challenges.neverlanctf.com:1110
페이지에 들어가면 He's my favorite Red guy 라고 하는데 쿠키몬스터에서 red guy의 이름은 Elmo다. 쿠키값에 그의 이름을 적는 쿠키가 있다. Elmo 를 적어주고 새로고침하면 플래그가 나온다.
flag : flag{YummyC00k13s}
Things are not always what they seem
50
if you can't find it you're not looking hard enough
페이지 소스보면 있다. 정확히는 글씨가 하얀색으로 되어 있어서 페이지에서는 안보이는 것이다. 드래그하거나 컨트롤+a 를 하면 볼 수 있다.
flag : flag{Whale_w0u1d_y0u_l00k3y_th3r3}
SQL Fun 1
75
REPORT: 'My Customer forgot his Password. His Fname is Jimmy. Can you get his password for me? It should be in the users table'
https://challenges.neverlanctf.com:1150
SELECT * FROM users WHERE Fname = 'Jimmy'
flag : flag{SQL_F0r_Th3_W1n}
SQL Fun 2
75
REPORT: A Client forgot his Password... again. Could you get it for me? He has a users account and his Lname is Miller if that helps at all. Oh! and Ken was saying something about a new table called passwd; said it was better to separate things
한때 우리 인류는 외계 생명체에 많은 관심을 가지고 있었다.
그래서 우리 인류는 외계에 지구를 소개하는 데이터를 전파에 넣고 전송을 했었는데,,,
그로부터 10년뒤,, 우리 인류는, 그것도 한국은 외계에서 보낸듯한 메시지를 수신받게 되었다.
그런데, 잠깐,,, 우리 인류가 사용하는 체계의 데이터가 아니었다...
과연 아래의 데이터는 무슨내용일까?