Shikata Ga Nai

Private? There is no such things.

Juice ShopのDatabase Schemaをやってみた

Hello there, ('ω')ノ

 

SQLインジェクションでDBスキーマ定義をすべて引き出すとのことで。

ちょっと面倒な作業だなと。

 

f:id:ThisIsOne:20200912102523p:plain

 

まずは、xxxを入力してエラー表示でもさせてみて。

 

f:id:ThisIsOne:20200912103017p:plain

 

レスポンスを見ると9つの項目が返ってきているようで。

 

f:id:ThisIsOne:20200912103154p:plain

 

しかしながら、これだけではクリアできていないようで。

次にappleで検索してみると。

 

f:id:ThisIsOne:20200912103957p:plain

 

リクエスト内容からパラメータが確認できず。

f:id:ThisIsOne:20200912103927p:plain

 

とりあえず、パラメータにappleを入力してみるとレスポンスが返ってきて。

 

f:id:ThisIsOne:20200912104233p:plain

 

シングルクォーテーションを追加するとエラーが表示されて。

ただ、ここでSQL文が確認できたので。

 

SELECT * FROM Products WHERE ( (name LIKE '%apple'%' OR description LIKE '%apple'%') AND deletedAt IS NULL) ORDER BY name

 

f:id:ThisIsOne:20200912104525p:plain

 

まずは、sqlliteからテーブルスキーマ(構造)を確認するには。

下記のテーブルがあって。

 sqlite_master

 

さきほどのエラーになったSQL文をもとに一度、appleのあとでSQL文を閉じて。

そのあとに、unionでもう一つのsql文を追加して。

不要なsql文はコメントアウトして実行してみると。

 

SELECT * FROM Products WHERE ( (name LIKE '%apple') ) union select * from sqlite_master -- 

%' OR description LIKE '%apple'%') AND deletedAt IS NULL) ORDER BY name

 

UNIONの左側と右側のSELECTには同じ数の結果列がありませんとのことで。

 

f:id:ThisIsOne:20200912111221p:plain

 

はじめに返ってきた項目数が9つだったので*を明示的に変更すると成功して。

 

f:id:ThisIsOne:20200912121038p:plain

 

さらに、UNION句でsqlite_masterテーブルのsqlカラムを適当に表示させることに。

 

f:id:ThisIsOne:20200912112906p:plain

 

ようやくクリアできた。

 

f:id:ThisIsOne:20200912112944p:plain

 

Best reagrds, (^^ゞ