0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

picoCTF-More SQLi writeup

0
Last updated at Posted at 2025-12-01

問題名:More SQLi

この問題は今までのSQLiとは少し違ってとても興味深いと感じました。

ログイン

実際のサイトがこちら。
スクリーンショット (187).png

まず適当な文字を入れてログインしてみました。
Username:test
Password:test

そうすると何やら怪しい画面が出てきました。
スクリーンショット (191).png
ログインには失敗していそうですが、ログイン時のSQL文が表示されました!(脆弱性ですねW)

このSQL文をよく見てみると、なにやらいつもと文脈が違うようです。
passwordとusernameの位置が変わっており、usernameにスクリプトを打ってもログインできないようになっていました。

Username:test
Password:' or 1 = 1 --
passwordの方にスクリプトを打ち込んでログインしてみると、ログイン成功しました!!
スクリーンショット (185).png

データの取得

会社の場所やアドレス、電話番号を調べるサイトみたいですね。
入力欄にcityと書いてあるので都市名でデータをDB(データベース)から取得する仕組みっぽい…多分こんな感じのSQLが動いてそうです。
select city,Address,Phone from ? where city = city名

では、unionを使って表示するデータを上書きしたいと思います。
以下のSQL文を打ち込みます。

' union select * from users --
ユーザーのログインデータが格納してあるUsersテーブルを使って検証してみます。
スクリーンショット (192).png
adminのデータを取得することができました。
Usersテーブルにはフラグがなさそうですね。

ここでpicoCTFのヒントを見てみました。
ヒント:SQLiLite
ネット上で調べてみるとSQLiteにはsqlite_masterというSQLの構造を管理するシステムテーブルがあるそうです。

sqlite_masterテーブルを使ってみる。
' union select * from sqlite_master --
スクリーンショット (193).png
何も表示されませんでした、どこかが間違っていそうです。

スクリーンショット (194).png
' union select 1,1,1 from sqlite_master --
上のSQL文を打ち込むとデータが表示されました。
どうやらselectで表示するデータ数がかみ合っていなかったようです。

補足

select city,Address,Phone from ? where city = city名
太文字のところがサイトの入力欄と連携していて、そこにSQL文を入れているので繋げると以下のようなSQLが実行されている。

select city,Address,Phone from ? where city = city名' union select 1,1,1 from sqlite_master --

この時にunionで繋いだSQL文のselectで表示させるデータ数は同じにしなくてはならないので、*を使うとおかしなことになってしまうっぽいです。

sqliteのテーブルの列情報などをまとめているサイトのURLを張っておきます。
https://www.techonthenet.com/sqlite/sys_tables/index.php

上のリンク先に飛ぶとsqlite_masterにはsqlという列があり、オブジェクトを作るときに実行されたCREATE文などのSQLが格納されているらしいです。
これを使ってみましょう。

' union select 1,1,sql from sqlite_master --と打ち込むとテーブル情報が出力されました。
スクリーンショット (189).png

上から二番目のmore_tableにflagというデータがあることが分かります。

more_tableのflagとついてにidも見てみました。
' union select 1,id,flag from sqlite_master --
フラグが出てきましたね!
スクリーンショット (190).png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?