はまやんはまやんはまやん

hamayanhamayan's blog

Entrypoint / Baiting / Admin Attack / Insert witty name / Xtremely Memorable Listing / Vandalism [Really Awesome CTF 2020 / RACTF 2020]

https://ctftime.org/event/1051
http://88.198.219.20:24271/

Entrypoint
Sadly it looks like there wasn't much to see in the python source. We suspect we may be able to login to the site using backup credentials, but we're not sure where they might be. Encase the password you find in ractf{...} to get the flag.
悲しいことにpythonのソースにはあまり見当たらなかったようです。バックアップの認証情報を使ってログインできるのではないかと疑っていますが、どこにあるのかはわかりません。ractf{...}で見つけたパスワードをエンコードしてフラグを取得します。
This challenge does NOT have fake flags. If you found some other flags while solving this challenge, you may have found the solutions to the next challenges first :P
Baiting
That user list had a user called loginToGetFlag. Well, what are you waiting for?
そのユーザーリストにはloginToGetFlagというユーザーがいました。さて、何を待っているんだ?
Admin Attack
Looks like we managed to get a list of users. That admin user looks particularly interesting, but we don't have their password. Try and attack the login form and see if you can get anything.
なんとかユーザーのリストを手に入れることができたようです。その管理者ユーザーは特に興味深そうですが、パスワードがわかりません。ログインフォームを攻撃してみて、何か得られるかどうか見てみてください。
Insert witty name
Having access to the site's source would be really useful, but we don't know how we could get it. All we know is that the site runs python.
Xtremely Memorable Listing
We've been asked to test a web application, and we suspect there's a file they used to provide to search engines, but we can't remember what it used to be called. Can you have a look and see what you can find?
ウェブアプリケーションのテストを依頼されたのですが、検索エンジンに提供していたファイルがあるのではないかと疑っているのですが、それが何と呼ばれていたのか思い出せません。調べてみて、何か見つかるかな?
Vandalism
That admin panel was awfully bare. There must be some other page, but we've no idea where it is. Just to clarify, ractf{;)} is the greedy admins stealing all the flags, it's not the actual flag.
あの管理画面はひどく剥き出しだった。他のページがあるはずですが、どこにあるのか見当もつきません。はっきりさせておくと、ractf{;)}は強欲な管理者がすべてのフラグを盗んでいるのであって、実際のフラグではありません。

Entry Point

ソースコードを見るとIn case I forget: Backup password is at ./backup.txtとある。
/backup.txtにアクセスしてみると、403 Forbiddenまあそうか。
ソースコードにはもう一つ不自然な点がある。
<link rel="stylesheet" href="/static?f=index.css"> どう見てもおかしい。しかも403…

/static?f=backup.txtにアクセスすると色々出てくる。
パスワードを包んで答えよということなのでractf{developerBackupCode4321}がEntrypointのフラグ。

develop:developerBackupCode4321でログインしてみよう。

f:id:hamayanhamayan:20200611081309p:plain

何だろう。jimmyTehAdminが太字になっている。こっちでログインしたらAdmin Attackのフラグか。
Cookieを確認すると、GUIDっぽいsessionが入っているのでログイン情報はセッションに入っているみたい。 これは触れないな…

Admin Attack

取り合えずログインフォームに'を投げてみる。

Traceback (most recent call last):
  File "/srv/raro/main.py", line 130, in index
    cur.execute("SELECT algo FROM users WHERE username='{}'".format(
sqlite3.OperationalError: unrecognized token: "'''"

なるほど。
とりあえず、' or 1=1--としてみるといける。
先頭ユーザーでログインしてるっぽい。
' or 1=1 limit 1,1--でフラグ。

Baiting

' or 1=1 limit 2,1--でフラグ。

そういえば…

先ほどのSQL失敗でmain.pyというファイル名が出てきたのでstaticで見てみよう。
/static?f=main.py

from application import main
import sys

# ractf{d3velopersM4keM1stake5}

if __name__ == "__main__":
    main(*sys.argv)

これを打つとInsert witty nameのフラグ。

Xtremely Memorable Listing

とりあえずrobots.txt

Disallow: /admin
Disallow: /wp-admin
Disallow: /admin.php
Disallow: /static

沢山出てくるけど、どれも違うっぽい。
問題文の頭文字をつなげるとXMLなので /sitemap.xmlこっちかな?
backup versionがあるらしい /sitemap.xml.bak
さらにファイルが指定されている /_journal.txt フラグがある。

Vandalism

探しまくっても特に見当たらなかった…

解説を見た

CTFtime.org / Really Awesome CTF 2020 / Vandalism / Writeup

エスパーでしたね

適当にログインしてレスポンスを見てみる。
X-OptionalHeader: Location: /__adminPortal

なにやら怪しい独自ヘッダーがわたってきているので/__adminPortalを見てみる。
移動してみると、/にリダイレクトされる。
あれ?ちゃんとadminでログインしないといけないか。
' or 1=1 limit 1,1--でログインして、改めて/__adminPortalに行く。

f:id:hamayanhamayan:20200611081327p:plain

なんか出てきた。コメントを見るとすごいものが出てくる。

f:id:hamayanhamayan:20200611081340p:plain

これのデコード方法は分からない。フラグの先頭のrで検索してみると沢山埋もれているようだ。

f:id:hamayanhamayan:20200611081350p:plain

この文字の山からアルファべットを抜き出せば答えが出てきそう。 pythonアスキー文字だけを抜き取るコードを書いたら、いつものダミーテキストが出てきて、中にフラグが埋め込まれている。