みなさんこんにちは!おさかなです!
今回は「Beginners’ SQLi」について、書いていこうと思います!
それでは、レッツゴー!!!!!
・SQLの学習をしたい方
・CTFの問題を解きたい方
・SQLを活用したい方
残り3ステージ!
![おさかな](https://osakanav.com/wp-content/uploads/2019/08/osakana.jpg)
クリアまで残り3ステージだ!!!
![ナビまる](https://osakanav.com/wp-content/uploads/2019/09/navmaru-2.jpg)
ちょっとずつ難易度が上がるけど、焦らずね💦
![おさかな](https://osakanav.com/wp-content/uploads/2019/08/osakana.jpg)
よーしっ!
![](https://osakanav.com/wp-content/uploads/2021/03/pwned-top-160x90.jpg)
事前準備
「Beginners’ SQLi」って何?という方、アカウントの作成がまだの方は、こちら!
![](https://osakanav.com/wp-content/uploads/2021/05/beginners-sql-top-160x90.jpg)
ステージ5の解き方はこちら!
![](https://osakanav.com/wp-content/uploads/2021/07/bgsql5-top-160x90.jpg)
※実際のハッキング行為はお止めください。当ブログは一切責任を負いません。
ステージ6を解いてみよう!
問題のチェック
それでは早速サイトにアクセスします!
今回は「ステージ6」の解き方について、わかりやすく解説していきたいと思います!
![](https://osakanav.com/wp-content/uploads/2021/05/biginners-sql-stage-1024x554.png)
こんな感じの問題です!
「Guess the query(クエリを推測する)」というタイトルで、「Just a typical injection.(典型的なインジェクション)」とあります。
![](https://osakanav.com/wp-content/uploads/2021/07/bgsql6-1024x620.png)
リンクを開いてみると、こんな感じです!
「I saw ‘wasedataro’ logged in into this page!
Do I need a password…?」
このページに「wasedataro」がログインしているのを見ました!
パスワードが必要ですか…?
とあり、ログインページのようなものが表示されています。(ふむふむ…。)
![](https://osakanav.com/wp-content/uploads/2021/07/gbsql6-q-1024x620.png)
とりあえずユーザー名は「wasedataro」だということがわかりますが、パスワードはわからない状態です。
![](https://osakanav.com/wp-content/uploads/2021/07/bgsql-wasedataro.png)
「SQLインジェクション」とは?
今回は「SQLインジェクション」という攻撃手法を行って、ログインを試みてみます!
SQLインジェクションとは、データベースと連動したWebアプリケーションなどに対する攻撃手法の一つで、検索文字列など外部から指定するパラメータの一部にSQL文の断片などを混入させ不正な操作を行うもの。また、そのような攻撃を可能にする脆弱性。 “injection” は「注入」の意。
IT用語辞典より引用
↓問題を解く上で、下記サイトもヒントになります✨
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9U1FMJUUzJTgyJUE0JUUzJTgzJUIzJUUzJTgyJUI4JUUzJTgyJUE3JUUzJTgyJUFGJUUzJTgyJUI3JUUzJTgzJUE3JUUzJTgzJUIzJUUzJTgxJUFCJUUzJTgxJUE0JUUzJTgxJTg0JUUzJTgxJUE2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMzQTNDM0MmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz01NGIxNjIzY2JjMmY4YjdiMWEyNmJlNmUxYTQyN2Y3ZQ&mark-x=120&mark-y=96&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9OTcyJnR4dD0lNDBjY2NjYW4mdHh0LWNvbG9yPSUyMzNBM0MzQyZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWJkYjQ5NThlZjQxZWI3ODRlMjM5ZTNjNjY5NGViZTY2&blend-x=120&blend-y=500&blend-mode=normal&s=c705618c0ab63c18fe7730e1591933c0)
![](https://osakanav.com/wp-content/uploads/2021/06/dave-dj-mashup-top-160x90.jpg)
ログインを試みよう!
それでは実際に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';--
コードを実行してみると…?こんな感じでログインすることができました!(わーい!)
![](https://osakanav.com/wp-content/uploads/2021/07/bgsql6.gif)
ちなみに条件式が正しければ「1」でなくても良くて、「4」とか「33」、空文字でもログインが可能です。(これでもOK!)
' or '' = '';--
何なら!ユーザー名の「wasedataro」がわからなくても、実はSQLインジェクションだけでログインが可能です!(なんだってー?!)
![](https://osakanav.com/wp-content/uploads/2021/07/bgsql6-sqlin.gif)
(もうちょっと…🍹)
FLAGを回答しよう!
FLAG「m1z0r3{sh0lder_h4ck1ng_1s_gu1lty}」とあるので、回答ページで入力してみると…?
![](https://osakanav.com/wp-content/uploads/2021/07/Inkedbgsql-flag_LI.jpg)
無事にクリアできました!!(おめでとう🎉)
![](https://osakanav.com/wp-content/uploads/2021/07/bgsql6-sql-flag-clear.gif)
![おさかな](https://osakanav.com/wp-content/uploads/2019/08/osakana.jpg)
全クリ目指して、がんばろう~🚩
これで全ての操作は完了です。(やった~!)
お疲れ様でした☕
![](https://osakanav.com/wp-content/uploads/2021/04/udemy-top-160x90.jpg)
ここまで読んでくださり、ありがとうございました!