問題名:Irish-Name-Repo1
※Irish-Name-Repo1は生成された問題サイトのURLに . (ドット)が付いていますが、ドットを消していないとサイトが開かないので注意してください。
問題のWebサイトはこんな感じです。

このサイトはアイルランド出身の人をリストでまとめていました。
左上のハンバーガーメニューをクリックするとsupportとadmin Loginが出てきます。
admin Loginを開くと、ログインページが表示されます。

スクリプトを打ち込んでみました。
Username:' or 1 = 1 --
Password:adc
解説
Username:のところにSQLのコメントアウトを打ち込んでいるため、passwordはどんな文字でも構いません。SQLインジェクションのコードは他にもあるため、いろいろ試してみてください。
SQLインジェクションの仕組み
ログインフォームは裏側でSQLが実行されています。
例えば、ユーザー情報がtestというテーブルに格納されている場合、adiminというユーザーデータを出力したい場合は以下のSQL文が行われています。
select * from test where Username='admin',password='admin123'
ログインの入力欄は''で囲われている場所と連携しているのです。
よって、入力欄の中に悪意のあるスクリプトを入力するとデータを不正に取得することができたり、不正ログインしたりすることができてしまうのです。
問題名:Irish-Name-Repo2
この問題は1の時と見た目は同じサイトのようです。
1の時と同様のスクリプトでログインしてみました。

SQLインジェクションが検出されましたと表示され、ログインできませんでした。
スクリプトを以下のものに変えてログインしてみました。
Username:admin' --
Password:adc
解説
1の時のスクリプトが使えなかったということは、or 1 = 1 などの特殊文字(SQL文)を検知した場合はログインできない仕組みにしているのではないかと思いました。
SQLのコメントアウトやスペースなどの文字は普通に使えるのでそこが脆弱性だなと感じましたW
問題名:Irish-Name-Repo3
個人的にこの問題がIrish-Name-Repoシリーズで一番難しかったです。
試しにadminと入力してみます。
ページのソースなども見てみましたが、特にヒントになりそうなものは何もありませんでした。
実際にデータがどのように帰ってきているのかを見たいのでkaliLinuxの中に落とし込んでみます。

ログインはlogin.phpで行われているとページのソースに書いてあるのでlogin.phpをLinuxにダウンロードします。
wget http://fickle-tempest.picoctf.net:61340/login.php --post-data="debug=1&password=adc"
--post データをPOSTで送信するという意味。
-data 入力するデータを定義している。
注意!
debug=1を入れないとデータがどのように帰ってきているのかが分かりません。
debug=1は、「デバックモードをオンにします」ということを意味しています。
AIに聞いてみたところ、デバックモードをオンにすることで、Webサイト上には表示しないけど、入力したデータの返答を見られるようにしてくれるっぽいです。
ページソースの所ではデフォルトでdebug=0が送信される仕組みになっているので、そこを1にする必要があります。
スクリプトを実行すると自動でlogin.php.〇へ保存完了と表示されるので、catコマンドで見てみます。
abcと入力するとnopが出力されました。
試しにaからzのアルファベットを入力してみました。

※入力ミスしてるのは見逃してください…
入力した全てのアルファベットが順番にズレており、シーザー暗号が関係していることが読み取れます。

passwordに' or 1 = 1 --と入力してみたところ、or が be に変換されてしまい、上手くスクリプトが起動できてませんでした。
passwordに' be 1 = 1 --を入力するとフラグが出てきました!
解説
今回は入力した文字がシーザー暗号に暗号化される影響で、' or 1 = 1 --というスクリプトを実行しても反映されないという事態が発生してました。
実際に入力したデータがどのように出力されているのかを調べてみることが大事ですね。





