시작페이지를 보면 아무것도 없다.

 

회원가입을 위해 우선 ctrl+shift+c로 개발자모드를 열어 뭔가가 있는지 찾아봤다.

 

수상한 부분이 할당되어 있는 것을 찾을 수 있다.

 

 

주석처리때문에 안되는것 같으니 Edit as HTML로 주석 부분을 지워버렸다.

 

Register 버튼이 생성되었다.

 

클릭하면 해당 창이 뜬다. 원하는 아이디와 비밀번호, EMAIL을 입력하고 decode me를 base64로 decode하면 로그인을 할 수 있다.

'war game > webhacking.kr' 카테고리의 다른 글

webhacking.kr level 16  (0) 2019.04.05
webhacking.kr level 15  (0) 2019.04.05
webhacking.kr level 14  (0) 2019.04.05
webhacking.kr level 6  (0) 2019.04.04
webhacking.kr level 1  (0) 2019.04.04

지난번 포스트에서 AES 복호화 코딩에 대해 기록했는데 이번에는 고속화에 대해 기록하려 한다.

 

AES 복호화 알고리즘

해당 그림을 보면 Inv_Shift Row -> Inv_Sub Byte -> Add Round key -> Inv_Mix Column순서로 한 라운드를 돈다.

고속화의 핵심은 우선 8bit짜리 16개의 블록을 32bit짜리 4블록으로 묶고,  Inv_Sub Byte와 Inv_Mix Column연산을 묶은 Td테이블을 만들어 최대한 연산 수를 줄이는 것이다.

 

Td[0] 테이블

우선 Td 테이블을 제작한다.

 

Td원리

Td[0]는 위 식에 기반해 S_box에 넣은 값과 연산하여 32bit로 만들어  256개의 원소를 가진 테이블을 제작한다.

위 방식대로 나머지 Td[1], Td[2], Td[3]도 마저 제작한다.

 

main 함수

기본적인 세팅을 해준 뒤, AES_KeySchedule_32bit함수를 작성해준다.

 

RoundkeyGeneration128_32bit

RoundkeyGeneration128_32bit함수를 들어가면 대부분 RoundkeyGeneration128과 같지만 각각 8bit로 쪼개 주는 AES_KeyWordToByte함수가 없는 것을 알 수 있다.

 

이번엔 File_AES_Decryption_Optimization함수를 보자. 

 

File_AES_Decryption_Optimization_1

 

위는 File_AES_Decryption_Optimization함수의 일부분이다. 초기벡터를 CT에 넣고 key인 W를 거꾸로 넣는 것이 불편해 앞, 뒤 숫자를 바꿔주는 코드를 넣었다.

 

이 뒤에 KeyMixcolumns해주었는데,  총 두 가지 방법으로 성공했다. 

 

KeyMixcolumns_1

 

첫 번째 방법은 키 W를 Td테이블에 SBox연산을 한 W를 넣는 방법이다.

 

KeyMixcolumns_2

두 번째 방법은 키 W를  AES_Inv_MixColumns에 넣고 돌리는 방법이다.

 

KeyMixcolumns을 해주는 이유는 복호화 순서가 Inv_Shift Row -> Inv_Sub Byte -> Add Round key -> Inv_Mix Column인데 가운데 Add Round key과정 때문에 Td테이블을 활용하기 위해 해 준 것이다. Mixcolumn은 선형연산으로 Mix(Sub_Byte^Add_Round_key)를 Mix(Sub_Byte)^Mix(Add_Round_key)로 분리할 수 있다. 해서 앞부분은 Td테이블을 활용, 뒤에는 KeyMixcolumns를 이용해 연산해준다.

 

File_AES_Decryption_Optimization_2

 

KeyMixcolumns연산이 끝났다면 이제 본격적으로 128bit씩 파일에서 받아와 라운드를 돌리면 된다. 

 

AES_DEC_Optimization을 보면 아까보다 훨씬 라운드가 간단해진 것을 볼 수 있다. 첫 번째 라운드에서  s에 32bit씩 넣어 Add Round key를 해주고 9라운드를 돌아주면 된다. 각 라운드를 잘 보면 Td테이블 연산과 동시에 Inv_Shift Row도 해주는 것을 볼 수 있다. 9라운드를 돌고나면 마지막 라운드는 Inv_Mix Column연산이 없음으로 Inv_Shift Row, Inv_Sub Byte, Add Round key만 해준다.

 

AES_CBC

마지막으로 AES_CBC만 해주면 복호화가 끝난다.

 

위 코드는 팀원 RyuH님의 도움으로 대부분 작성되었습니다~!

팀 프로젝트 과제로 AES 암호화 (key size : 128 bit)된 mp3 파일을 해독하여 노래 제목을 찾는 과제가 나왔다.

 

과제 조건

조건은 이 정도.

 

u8, u32 설정

u8과 u32를 설정해주고

 

inv_Sbox 생성 함수

위 함수로 inv_Sbox를 생성해 준다. 

 

inv_Sbox

inv_Sbox를 코드에 넣어주고

 

main

main 문 작성. mp3파일을 올려야 해서 fp사용.

 

File_AES_Decryption

File_AES_Decryption 함수를 작성. 기본적인 CT, PT, IV(초기 벡터), MK, RK, keysize 등을 설정해준다.

 

RoundkeyGeneration128

AES_KeySchedule에서  key가 128bit임으로 RoundkeyGeneration128 함수로 건너뛰어서 함수를 작성한다.

 

Rcon

Rcon을 설정해주고,

 

AES_RotWord & AES_SubWord

AES_RotWord(key shift column)와 AES_SubWord(Sbox 대입)를 설정해준다.

 

AES_Roundkey_4words_generation

AES_Roundkey_4words_generation로 각 라운드 키를 마저 만들어주고,

 

AES_KeyWordToByte

AES_KeyWordToByte로 32bit로 묶여있던 W배열을 8bit로 다시 쪼개 준다.

 

AES_KeySchedule을 다 수행했으므로 다시  File_AES_Decryption로 돌아간다.

 

File_AES_Decryption_2

현재 CBC모드로 암호화가 되어있기 때문에 CT에 초기 백터를 넣어준 후, 파일을 128bit만큼 각각 쪼개서 파일이 끝날 때까지 while문을 돌려 복호화해주는 방식으로 코드를 작성했다.

 

AES_DEC

AES_DEC 코드를 보면 AES_LRound(AES_Inv_MixColumn 없음), AES_Round, AES_Inv_AddRoundKey 순서로 함수를 돌면서 복호화되도록 코드를 작성했다.

 

AES_CBC

마지막으로 AES_CBC를 돌면서 복호화가 끝난다.

 

위 코드는 팀원 RyuH님의 도움으로 대부분 작성되었습니다~!

문제를 보니 첨부파일을 봐야겠다.


사진을 보니 별 다른 힌트가 없어서 트위서에 닉네임을 검색했습니다.


음 쉽게 뜨네....

'CTF > KCTF' 카테고리의 다른 글

KCTF docker 열기  (0) 2019.11.08
The ATTACK of Predator  (0) 2018.12.10
rock-paper-scissors master!  (0) 2018.12.10
Z3ro_W1dtH_SP4C3  (0) 2018.12.10
WH3R3?  (0) 2018.12.09

이 문제는 처음에 감을 잘못 잡아서 오래 걸린 문제이다...


사실 딱 보면 각각의 글자들이 암호와 되어있고 맨 앞에 네 글자가 FLAG로 시작한다고 감이 온다.

필자는 crypto를 생각해서 네글자를 가지고 나머지 글자를 추측하는 문제인줄 알았는데 도저히 네글자로는 문제가 풀리지 않았다.


해서 google에 predator lsnguage를 쳤더니 비슷한 모양의 글자들이 나왔다.


이것에 맞춰 decoder했더니 flag를 구할 수 있었다. 참고로 대문자 T와 소문자 o같이 똑같아 보이는 글자도 있어서 애먹었다...

'CTF > KCTF' 카테고리의 다른 글

KCTF docker 열기  (0) 2019.11.08
Beware of SNS!  (0) 2018.12.10
rock-paper-scissors master!  (0) 2018.12.10
Z3ro_W1dtH_SP4C3  (0) 2018.12.10
WH3R3?  (0) 2018.12.09

이번에는 forensic다음으로 많이 푼 misc 관련 문제를 wirte_up해보겠다.


이 문제는 nc가 있는거로 봐서 터미널에서 접근하는 문제 같다.


터미널로 들어가보니 가위바위보를 하란다.


조건이 아무래도 이기는것 같은데...


1,2,3,1,2,3,3을 쳤는데 바로 이겼었다. 당시에 풀때는 번호 한개를 계속 넣어서 풀었는데 wirte_up을 쓸때 한번호면 계속 넣으니 버퍼(?)가 터졌다...

(조건식이 감이 안잡힌다...후에 알게되면 서술함)

'CTF > KCTF' 카테고리의 다른 글

Beware of SNS!  (0) 2018.12.10
The ATTACK of Predator  (0) 2018.12.10
Z3ro_W1dtH_SP4C3  (0) 2018.12.10
WH3R3?  (0) 2018.12.09
Hold Me!  (0) 2018.12.09

+ Recent posts