強エンジニアになりたい大学生の日記

その日学んだことを日記程度に発信します。

CpawCTF(2)

cpawctfの続きを進めていく!

Q19.[Misc]Image!

[解法] mimetypeにapplication/vnd.oasis.opendocument.graphicsと書いてあり、調べるとこれはLibreOfficeで開けるっぽいので、zipファイルのまま開いたらflagをゲット。(Ubuntuがあるからいいけど、windowsの場合はvirtualboxとかを使うのかな、、?)

Q20.[Crypto]Block Cipher

[解法] とりあえずソースコードを読んでみる。引数を2つとっていて1つ目はおそらく暗号文だけど2つめがわからないので0からランダムに入れていったら4を入れたときにそれっぽいflagをゲットできた。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void){
  int i;
  int j;
  int key = 4; //ランダムに入れていった
  const char* flag = "ruoYced_ehpigniriks_i_llrg_stae";
  printf("cpaw{");
  for(i = key - 1; i <= strlen(flag); i+=key) for(j = i; j>= i - key + 1; j--) printf("%c", flag[j]);
  printf("}");
  return 0;
}

Q21.[Reversing]reversing easy!

[解法]バイナリに関する問題初めてだ、、、。stringsコマンドを使って、指定したバイナリ/データファイル内にある表示可能な文字列を出力する。よーく読んで見るとflagを発見できる。Python等で余計な記号を消してもいいかも。

今日はここまで。 CTF楽しい!!