みなさんこんにちは!おさかなです!
今回は「Beginners’ SQLi」について、書いていこうと思います!
それでは、レッツゴー!!!!!
・SQLの学習をしたい方
・CTFの問題を解きたい方
・SQLを活用したい方
残り3ステージ!

クリアまで残り3ステージだ!!!

ちょっとずつ難易度が上がるけど、焦らずね💦

よーしっ!

事前準備
「Beginners’ SQLi」って何?という方、アカウントの作成がまだの方は、こちら!

ステージ5の解き方はこちら!

※実際のハッキング行為はお止めください。当ブログは一切責任を負いません。
ステージ6を解いてみよう!
問題のチェック
それでは早速サイトにアクセスします!
今回は「ステージ6」の解き方について、わかりやすく解説していきたいと思います!

こんな感じの問題です!
「Guess the query(クエリを推測する)」というタイトルで、「Just a typical injection.(典型的なインジェクション)」とあります。

リンクを開いてみると、こんな感じです!
「I saw ‘wasedataro’ logged in into this page!
Do I need a password…?」
このページに「wasedataro」がログインしているのを見ました!
パスワードが必要ですか…?
とあり、ログインページのようなものが表示されています。(ふむふむ…。)

とりあえずユーザー名は「wasedataro」だということがわかりますが、パスワードはわからない状態です。

「SQLインジェクション」とは?
今回は「SQLインジェクション」という攻撃手法を行って、ログインを試みてみます!
SQLインジェクションとは、データベースと連動したWebアプリケーションなどに対する攻撃手法の一つで、検索文字列など外部から指定するパラメータの一部にSQL文の断片などを混入させ不正な操作を行うもの。また、そのような攻撃を可能にする脆弱性。 “injection” は「注入」の意。
IT用語辞典より引用
↓問題を解く上で、下記サイトもヒントになります✨


ログインを試みよう!
それでは実際にSQLインジェクションのコードを書いていきましょう!
(と言ってもコード自体はすごくシンプル…!)
1' or '1' = '1';--
パスワードの欄に上記のコードを入れることで、処理を行う際のSQL文がこのようになります。
すると、‘1’ か ‘1’ が ‘1’なら真という条件式が出来てしまうので、パスワードがわからない状態でも、ログインが可能になってしまいます💦
SELECT user_id,password FROM users WHERE user_id='1' or '1' = '1'-- AND password='$password';
条件式については、こちらも参考になります!

末尾の「—」は以降のSQL文をコメントアウトするために使用します。(ふむふむ…。)
1' or '1' = '1';--
コードを実行してみると…?こんな感じでログインすることができました!(わーい!)

ちなみに条件式が正しければ「1」でなくても良くて、「4」とか「33」、空文字でもログインが可能です。(これでもOK!)
' or '' = '';--
何なら!ユーザー名の「wasedataro」がわからなくても、実はSQLインジェクションだけでログインが可能です!(なんだってー?!)

(もうちょっと…🍹)
FLAGを回答しよう!
FLAG「m1z0r3{sh0lder_h4ck1ng_1s_gu1lty}」とあるので、回答ページで入力してみると…?

無事にクリアできました!!(おめでとう🎉)


全クリ目指して、がんばろう~🚩
これで全ての操作は完了です。(やった~!)
お疲れ様でした☕

ここまで読んでくださり、ありがとうございました!