본문 바로가기
CTF

[CTF] DawgCTF 2021 writeup

by snwo 2021. 5. 9.

 

연구동아리 waylab 시간에 푼 CTF 이다. 

기억나는 문제 writeup 조금만 올려보겠습니다.

 

BBomb Phase 5

숫자 4개를 입력받고, 차이가 10을 넘지 않는 수열의 합이 8084가 되어야한다.

이 숫자들은 func5 함수에서 검증하는데, 

대충 이 함수에서 1이 나오는 숫자들이 있는데

 

이 숫자 4개다. 문제에서 주어진 rockyou.txt 파일에서 해당하는 행에 있는 단어들을 _ 로 구분해서 제출하면 된다.

BBomb Phase 7

5번이랑 비슷한데, 수열에서 차이나는 범위는 제한이 없지만, 각 자리의 숫자를 로테이션 한 값들이

모드 func5 함수를 만족해야한다.

 

마찬가지로 rockyou.txt 에서 해당 행에 있는 단어들을 _ 으로 구분해서 제출하면 된다.

cookin the ramen

 .--- ...- ...- . ....- ...- ... ..--- .. .-. .-- --. -.-. .-- -.- -.-- -. -... ..--- ..-. -.-. ...- ...-- ..- --. .--- ... ..- .. --.. -.-. .... -- ...- -.- . ..- -- - . -. ...- -. ..-. --- -.-- --.. - .-.. .--- --.. --. --. ...-- ... -.-. -.- ..... .--- ..- --- -. -.- -..- -.- --.. -.- ...- ..- .-- - -.. .--- -... .... ..-. --. --.. -.- -..- .. --.. .-- ...- ... -- ...-- --.- --. ..-. ... .-- --- .--. .--- .....

 

이 값을 복호화하면 되는데, 

 

 

cyber chef 로 돌리면, 추천해줘서 그대로하면 된다.

 

TrashChain

 

 

내가 체인에 입력한 값들을 H 함수로 해시하고, 두 체인의 해시값은 같아야한다.

첫번째 체인은 모든 값이 1이 넘어야하고, 3개 이상이다.

두번째 체인은 첫번째 체인의 최대값보다 최소값이 커야하고, 첫번째 체인보다 3개 더 입력해야한다.

 

해시함수에서는, 값을 0으로 만들 수 있다.

prev_hash 는 1부터 시작하고, pow(val + hash_num, B, A) 에서,

val+hash_num 값이 A 의 배수라면, 값은 0이 된다.

 

hash_num 은 반복문에서 i+1 가 들어가므로, A-i-1 값을 주면, 해시값이 0이 된다.

 

이 때, A-i-1 값에 2를 곱해도 0이되니까,

첫번째 체인은 A-i-1 3개, 

두번째 체인은 2 * A-i-1 3개를 주면 된다.