CpawCTF Q20.[Crypto]Block Cipher

与えられたC言語のソースコードを読み解いて復号してフラグを手にれましょう。

暗号文:cpaw{ruoYced_ehpigniriks_i_llrg_stae}

crypto100.c

crypto100.cをダウンロードして、ソースコードを確認する。for文が1行になってたりするので、少しだけ見やすく修正。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[]){
 int i;
 int j;
 int key = atoi(argv[2]);
 const char* flag = argv[1];
 printf("cpaw{");
 for(i = key - 1; i <= strlen(flag); i+=key){
   for(j = i; j>= i - key + 1; j--){
     printf("%c", flag[j]);
   }
 }
 printf("}\n");
 return 0;
}

ソースコードを見ると、引数としてflagとkeyを渡してflagの文字列の順番を入れ替えているようだ。与えられた暗号文を見ると、keyとして4を渡すとよさそうなので、コンパイルして実行してみる。

$ gcc crypto100.c -o crypto100
$ ./crypto100 ruoYced_ehpigniriks_i_llrg_stae 4
cpaw{Your_deciphering_skill_is_great}

答え:cpaw{Your_deciphering_skill_is_great}

CpawCTF write-upまとめ

この記事が気に入ったらサポートをしてみませんか?