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

SQL問題、だんだん難しくなってきたな…。

1つ1つ丁寧にやっていけば大丈夫だよ!

ありがとう~ナビまる~✨

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

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

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

こんな感じの問題です!
「Injection Introduction」というタイトルで、「I’m not about to buy fruits!(私は果物を買うつもりはありません!)」とあります。

リンクを開いてみると、こんな感じです!
「Hahaha, I found the ‘users’ table schema!
There are ‘name’ and ‘password’ columns in it!
(「users」テーブルスキーマを見つけました!
その中には「名前」と「パスワード」の列があります!)」
とあり、入力ボックスが表示されています。(ふむふむ…。)

「UNION文」を使おう!
今回は入力ボックスの前に、既に「SELECT文」が記載されているのがポイントです!
通常SELECT文は、1つの文に1つまでしか使用することが出来ませんが、「UNION文」を使うことで、2つの文を繋げることができます!

「usersテーブル」の中身を見るために、ボックスの外側のSELECT文と組み合わせて、結果としてこんな感じのコードを作成します。
SELECT name, price FROM product WHERE name LIKE ' ' UNION SELECT * FROM users ; -- '
SELECT文の基本構文がわからない方は、こちらの問題もチェック↓

ちなみに最後の「—」は、あらかじめ記載されており消すことができない末尾の「‘」をコメントアウトするために使用しています。(おお!)

入力する部分はこんな感じ!(ふむふむ…。)
' UNION SELECT * FROM users ; --
コードを実行すると…?こんな感じで「usersテーブル」を表示させることができました!(わーい!)

(もうちょっと…🍵)
別解
先ほど末尾の「’」を「–」コメントアウトする方法を取りましたが、実は別の方法で処理することもできます!(なーにー!?)

末尾のシングルクオーテーションを2つにすることで、かっこを閉じることができるため、結果としてコメントアウトした時と、同じ挙動になります!(すごい!)
SELECT name, price FROM product WHERE name LIKE ' ' UNION SELECT * FROM users ''
入力する部分
' UNION SELECT * FROM users ’
どちらの方法を使用しても大丈夫ですが、解き方の引き出しを増やしておくと、今後CTF問題を解く際に便利かなと思うので、ぜひ一度試してみてください~✨
FLAGを回答しよう!
adminのとろにFLAG「m1z0r3{d0nt_f0rget_enctypt1ng_passw0rd}」とあるので、回答ページで入力してみると…?

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

もっと挑戦したい方は、ステージ6のログイン試行もぜひ!


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

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