CTFがなぜ解けないのかについての考察

CTFが解けない😢

問題解けなすぎたので何で解けないのか考察してみた。

1. 問題の分類

「解くことができるか」という観点で問題を分類してみる。 以下の4つに分類できた。

A. 知っていて解ける問題
B. 知っているが解けない問題
C. 知らなくて解ける問題
D. 知らなくて解けない問題

そもそも解ける問題は考察の対象ではないためBとDについて掘り下げてみる。

B. 知っているが解けない問題

どういうことかというと,Write up見て特に新しい知識を得るでもなくただ試していなかったがために解けなかった問題のこと。
【原因】
失敗した試みを何度も繰り返してしまう。
😇「あれ、何でこれ通らんの?ちょっと変えてみるか!!エイ!!。。やっぱ通らねえなぁ。。」
みたいなやつ。
通らない似たような試みをしている間に時間が経っちゃって結局解けなくなる。
【TRY】
PDCAサイクルを意識する。
当たり前だけど、これができていないから無駄に時間食う。
解けても自分のためにならないからTry and Errorは害悪。
15分考えてダメだったら、全く違うアプローチを考える。
(例)
javascriptの問題だと思ったけど上手くいかなくてeasy問なのにもう30分もハマってる...(ってなる前に)
→合ってるかわからないけどとりあえずlocal proxy立てて通信を確認してみるか。

D.知らなくて解けない問題

簡単に片付けてしまえば知識不足。
しかし現代に生きる私達は知識不足をGoogle先生の力を借りることで補うことができる。
そのためDももう少し分解することができる。

1. 脆弱性を知らない/気づいていない
【原因】
知らない→完全なる知識不足。 気づいていない→知識が定着していない。 【TRY】
知らないに関しては本やネットの記事で勉強する。
気づいていないに関しては
「ある技術に対して3つ以上の要素を説明できるようにする。」
(例)
Content Security Policyを説明してくださいって言われたときに、
🙃「XSSを防ぐやつでしょ。」
以上のことが言えないような理解を避ける。
- 😎「リソースをどこから取得できるかを制限する仕組み。」
- 😎「HTTP headerで指定する。」
- 😎「CSPを利用してXSS脆弱性を潰すことができる。」
くらいまで理解することを心がけてみる。

2. 脆弱性に気づいているが解けない 【原因】
調査力がないことと,考察力がないことが原因としてあげられる。
もう少し細かく分析すると、 - 問題のヒントとなる材料を集めることができていない。

【TRY】
問題のヒントとなる材料を集めることができていない。
ヒントを探しまくる。(これ以上分解できなかった。。。)
(例)
SQL injectionは攻撃手法が豊富なため問題中にヒントとなるものが隠れている可能性が高い。 admin' -- #であったり,UNION attackなど試したけどどうも上手くいかない時は,ヒントを探してみる。
ヒントになりそうなものがあればググってみると何か見つかるかも...!!!