0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[picoCTF] fixme 1 (Rust) WriteUp

0
Posted at

問題の概要

General Skills,Easy

Have you heard of Rust? Fix the syntax errors in this Rust file to print the flag!
(Rustを知っていますか? このRustファイルの構文エラーを修正して、フラグを出力してください!)

提供されたRustのソースコードを修正し、正常に実行させてフラグを獲得する問題です。

解法

ソースコードをダウンロードし、まずは cargo run で実行しながら、コンパイラに指摘されたエラーを順番に修正していきました。

1. セミコロン(;)の付け忘れ

最初の実行で以下のエラーが発生。

error: expected `;`, found keyword `let`

  • 原因: 変数定義の末尾にセミコロンがありません
  • 対処: let key = String::from("CSUCKS") の末尾に ; を追加

2. フォーマット指定子の不一致

再実行すると、次のエラーが発生。

error: argument never used

  • 原因: println! 内で、引数に対して正しくないフォーマット指定子が使われていた(":?")ため、正しいフォーマット指定子 {} に修正

3. 未定義の変数名(タイポ)

再実行すると、スコープに関するエラーが発生。

error[E0425]: cannot find value `ret` in this scope

  • 原因: 関数内の処理で、定義されていない ret という変数を参照(または呼び出そうと)していました。コメントアウトのHow do we return in rust?より、タイポだと推測
  • 対処: ret; となっていた部分を return; に書き換え

結果

すべてのエラーを修正して再度 cargo run を実行したところ、コンパイルが正常に通リ、無事にフラグ文字列が出力されました!

まとめ

Rustの親切なコンパイルエラー(エラードリブン)に従って、

  1. セミコロンの補完
  2. マクロのフォーマット修正
  3. 変数名のタイポ修正
  4. 制御構文(return)の修正

を順に行うことでクリアできました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?