[DawgCTF 2021] Write-Up :Misc:

두비니

·

2021. 5. 11. 00:38

 

 

 

 

DawgCTF에 참가했습니다!

풀었던 문제 및 복습한 문제들 작성할게용

 

 

 

1. DawgCTF Discord - 5 pts (Solved)

 

Tag : Misc, Discord

 

 

 

 

 

2. Toliet Humor 5 - 50pts

 

진짜 화났던 문제....😤

 

Tag: Misc, Emoji

 

이걸 푸느라 애쓴 내가 싫다..(한 30분 붙잡고있다가 결국못품)

 

misc 채팅창 반응

 

flag는 DawgCTF{5️⃣💩} 였습니다....

개인적으로 이런 문제는 내지 말았으면 해요ㅎ... 그래도 제작자 말로는 meme이라고 하니 내가 트렌드에 따라가지 못하는걸로...

 

+) 2021.08.06 추가

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 이거 특정 unicode값에 대해서 url 처리를 비정상적으로 해주는 오류가 있다고 하네요. 자료는 찾을 수 없는데, pwnable.kr에서 이 취약점이 터져서 사이트 쉘이 따졌다고 합니다ㅋㅋㅋㅋㅋㅋㅋ meme의 어원을 알아버린 나..

대충 비슷한 취약점 내용의 글 : https://owasp.org/www-community/attacks/Unicode_Encoding

 

 

3. Two Truths and a Fib - 100pts (Solved)

 

 

Tag: Misc, python, fibonacci

 

 

문제를 보면, 세 숫자가 주어지고, 그 중 피보나치 수열에 해당하는 값을 넣으면 되는 문제입니다.

대신 시간제한이 1초정도로 있어서 당연히 스크립트로 해결해야겠죠?

 

gen_fib.py

# Program to display the Fibonacci sequence up to n-th term

nterms = int(input("How many terms? "))

# first two terms
n1, n2 = 0, 1
count = 0

# check if the number of terms is valid
if nterms <= 0:
   print("Please enter a positive integer")
elif nterms == 1:
   print("Fibonacci sequence upto",nterms,":")
   print(n1)
else:
   print("Fibonacci sequence:")
   while count < nterms:
       print(n1, end=', ')
       nth = n1 + n2
       # update values
       n1 = n2
       n2 = nth
       count += 1

이 코드로 미리 피보나치 수열을 만들고

 

fib.py

from pwn import *

context.log_level='debug'
p = remote("umbccd.io", 6000)

fib = [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903, 2971215073, 4807526976, 7778742049, 12586269025, 20365011074, 32951280099, 53316291173, 86267571272, 139583862445, 225851433717, 365435296162, 591286729879, 956722026041, 1548008755920, 2504730781961, 4052739537881, 6557470319842, 10610209857723, 17167680177565, 27777890035288, 44945570212853, 72723460248141, 117669030460994, 190392490709135, 308061521170129, 498454011879264, 806515533049393, 1304969544928657, 2111485077978050, 3416454622906707, 5527939700884757, 8944394323791464, 14472334024676221, 23416728348467685, 37889062373143906, 61305790721611591, 99194853094755497, 160500643816367088, 259695496911122585, 420196140727489673, 679891637638612258, 1100087778366101931, 1779979416004714189, 2880067194370816120, 4660046610375530309, 7540113804746346429, 12200160415121876738, 19740274219868223167, 31940434634990099905, 51680708854858323072, 83621143489848422977, 135301852344706746049, 218922995834555169026, 354224848179261915075, 573147844013817084101, 927372692193078999176, 1500520536206896083277, 2427893228399975082453, 3928413764606871165730, 6356306993006846248183, 10284720757613717413913, 16641027750620563662096, 26925748508234281076009, 43566776258854844738105, 70492524767089125814114, 114059301025943970552219, 184551825793033096366333, 298611126818977066918552, 483162952612010163284885, 781774079430987230203437, 1264937032042997393488322, 2046711111473984623691759, 3311648143516982017180081, 5358359254990966640871840, 8670007398507948658051921, 14028366653498915298923761, 22698374052006863956975682, 36726740705505779255899443, 59425114757512643212875125, 96151855463018422468774568, 155576970220531065681649693, 251728825683549488150424261, 407305795904080553832073954, 659034621587630041982498215, 1066340417491710595814572169, 1725375039079340637797070384, 2791715456571051233611642553, 4517090495650391871408712937, 7308805952221443105020355490, 11825896447871834976429068427, 19134702400093278081449423917, 30960598847965113057878492344, 50095301248058391139327916261, 81055900096023504197206408605, 131151201344081895336534324866, 212207101440105399533740733471, 343358302784187294870275058337, 555565404224292694404015791808, 898923707008479989274290850145, 1454489111232772683678306641953, 2353412818241252672952597492098, 3807901929474025356630904134051, 6161314747715278029583501626149, 9969216677189303386214405760200, 16130531424904581415797907386349, 26099748102093884802012313146549, 42230279526998466217810220532898, 68330027629092351019822533679447, 110560307156090817237632754212345, 178890334785183168257455287891792, 289450641941273985495088042104137, 468340976726457153752543329995929, 757791618667731139247631372100066, 1226132595394188293000174702095995, 1983924214061919432247806074196061, 3210056809456107725247980776292056, 5193981023518027157495786850488117, 8404037832974134882743767626780173, 13598018856492162040239554477268290, 22002056689466296922983322104048463, 35600075545958458963222876581316753, 57602132235424755886206198685365216, 93202207781383214849429075266681969, 150804340016807970735635273952047185, 244006547798191185585064349218729154, 394810887814999156320699623170776339, 638817435613190341905763972389505493, 1033628323428189498226463595560281832, 1672445759041379840132227567949787325, 2706074082469569338358691163510069157, 4378519841510949178490918731459856482, 7084593923980518516849609894969925639, 11463113765491467695340528626429782121, 18547707689471986212190138521399707760, 30010821454963453907530667147829489881, 48558529144435440119720805669229197641, 78569350599398894027251472817058687522, 127127879743834334146972278486287885163, 205697230343233228174223751303346572685, 332825110087067562321196029789634457848, 538522340430300790495419781092981030533, 871347450517368352816615810882615488381, 1409869790947669143312035591975596518914, 2281217241465037496128651402858212007295, 3691087032412706639440686994833808526209, 5972304273877744135569338397692020533504, 9663391306290450775010025392525829059713, 15635695580168194910579363790217849593217, 25299086886458645685589389182743678652930, 40934782466626840596168752972961528246147, 66233869353085486281758142155705206899077, 107168651819712326877926895128666735145224, 17340252117279]

p.recvuntil("Correct!\n")
p.recvuntil("[")


#find the fib
for j in range(100):
	n = []
	for i in range(2):
		n.append(int(p.recvuntil(",")[:-1]))
	n.append(int(p.recvuntil("]")[:-1]))
	print n
	for i in n:
		if i in fib:
			p.sendline(str(i))
			break
		else:
			continue

	print p.recvuntil("Correct!\n")
	p.recvuntil("[")

p.interactive()

그 미리 만든 피보나치 수열로 비교하는 방식을 선택했습니다.

맨 처음에는 스크립트 자체가 그 자리에서 피보나치 수열을 만들도록 했는데 너무 크니깐 1초가 넘어가는 경우가 있더라구요. 

 

 

굳굳

말장난 좋아ㅎ(원래 미국권 학교에서는 ice-breaking용으로 2가지 사실과 1가지 거짓말을 섞어서 이야기해서 거짓말을 찾아내는 일종의 게임을 하는데(이게 two truth and a fib), 여기서는 fib를 fibonacci로 봤어요ㅎㅅㅎ 아무튼 그래서 플래그가 welcome week라고!!! 그냥 설명하고 싶었다고 문제 좋다고!!! 설명충 아웃!) 

 

 

4. The rain in Spain - 100pts

 

 

Tag: Misc, csv, data analysis

 

이 문제도 결국 못풀긴했는데 이상한곳 삽질해서 포기를 했더라구요😥😥 진짜 조금만 더 하면 됐는데...!

우선 파일타입이 csv인걸보고 pandas로 뭔가 분석을 해야겠다고 생각해서 일단 jupyter로 좀 보았습니다.

 

일단 문제에서 제시한 것은 Malaga쪽을 항해했지만, 이상한 값이 보였다고 했기 때문에 뭔가 특이한 값이 있는지 확인해보았습니다.

근데 이미 여기서 잘못됐어요... 특이값만 볼생각을 하고 하나의 요소에 대한 분포도만보고, 상관관계를 볼 생각을 못했습니다.

 

일단 전체적인 값을 이상할 게 없어서 개인분석을 했지만, 위에서 말한것처럼 상관관계를 보는게 맞았습니다.

 

temperature과 calender_day의 상관관계를 보면 조금 이상한 것을 볼 수 있습니다.

 

 

그래서 확인해보면 짜잔~

DawgCTF{p10ts_n3atqy_0n_th3_p1an3}

으으... 이 바보야 그걸 그렇게 빨리 포기하니..

 

 

 

5. Identifications - 125 pts

 

 

Tag : CLLI, BSSID, SSID

 

 

 

자신이 어디있는지 찾아달라고 하네요. CLLI코드는 조금 찾아보니 아무튼 주소가 포함되어서 구분할 수 있는 구분자로 보입니다.

우선 7z파일을 열면 사진 두장이 있습니다.

 

 

우선 사진 자체에 정보가 있는지 궁금해서 binwalk라던가 파일 분석을 했는데 크게 이상한 점이 없어서 사진 자체를 조금 봤습니다.

첫 번째 사진은 별게 없어보이고, 두 번째 사진은 BSSID, SSID 등등의 정보가 적혀 있습니다.

구글링을 통해서 이거가지고 찾을 수 있는 툴을 찾았어용

 

wigle.net/

 

WiGLE: Wireless Network Mapping

 

wigle.net

 

위 사이트를 통해서 미국 Maryland주인것을 알 수 있었습니다.

 

그래서 해당 위치 주변을 보았고,

 

 

그리고 구글 맵으로 해당 지역을 찾아보니 사진 속 장소도 쉽게 찾을 수 있었습니다.

이걸 가지고 clli코드를 찾았습니다. 풀이를 보니깐 그냥 저기 있던걸 다 넣은것같더라구요.

www.telcodata.us/search-switches-by-zip-code?zip=21771

 

TelcoData.US: Search for Switches by Zip Code

Still going strong after 19 years! Last Updated: Sat May 8 01:15:34 2021

www.telcodata.us

 

 

 

6. Knock Knock - 200pts

 

Tag: Misc, Linux

 

knock가 뭔가했더니 다음과 같은 명령어였네요

 

linux.die.net/man/1/knock

 

knock(1): port-knock client - Linux man page

 

linux.die.net

근데 사람들의 반응을 보니 knock을 이용해서 푸는 건 안되고, nc -z가 되나보네요

 

그래서 solution은 다음과 같다고 하네요

 

 

 

보아하니 문제 자체에도 문제가 조금 있었던거 같더라구요...ㅎ 이건 어렵당

끝!

'CTF' 카테고리의 다른 글

[DawgCTF 2021] :pwn: Bofit Write-Up  (0) 2021.05.14
[DawgCTF 2021] :pwn: No Step On Snek Write-Up  (0) 2021.05.14
[CodeFest 2021] :pwn: Write-Up  (0) 2021.03.20
[PoseidonCTF 2020] misc write-up  (0) 2020.08.10
[castorsCTF2020] ::pwnable:: abcbof풀이  (0) 2020.06.01