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?

【WriteUP】CpawCTF Level 3

0
Posted at

はじめに

こんにちは。セキュリティ知識の向上を目的にCpawCTFに挑戦しています。Level 3のWriteUPをまとめました。
Level 1のWriteUPはこちら
Level 2のWriteUPはこちら


1. [Reversing] Q23. またやらかした!

メモリ内容から出力結果を再現するとflagが出てくる。

  • WSL、gdb:
    WSLのfileコマンドでファイル形式がELFであることを確認。
    gdbでプログラム全体を表示させると、怪しい部分(movl)が並んでいる部分がある。
(gdb) disas main

movlの下のほうにはxorとcmplが書かれているので、xor処理をループしているらしいと推測する。
処理をpythonで再現する。

  • python:
    movlが示す16進数を次々にXORした値を計算し、chrで文字に変換して並べるとflagとなる。

2. [Web] Q24. Baby's SQLi - Stage 2

SQLを打ち込むためのサイトURLが中々見つけられなくて右往左往していたら、stage1のflagが入っている表に書かれていました。
stage2用のURLにアクセスすると、ユーザー名とパスワードを入力するフォームがある。
ユーザ名は "porisuteru" と書かれている。
パスワードが分からないので、無効化するコードをパスワード欄に入力する。

' OR '1'='1

実行するとログインできて、flagが表示される。


3. [PPC] Q26. Remainder theorem

Aで割った余りがB かつ Cで割った余りがD になる数がflag。

pythonでループ処理を書いて解く。
初期値32134に154891をi回足し、3438487で割った余りが193127になれば、その時の32134+154891*iが答え。

m1 = 32134
m2 = 193127
for i in range(100000):
    m1 += 1584891
    if m1 % 3438478 == 193127:
        print(m1)
        break

4. [Crypto] Q29. Common World

RSAの問題。

公開鍵は $e=11$ と極端に小さい。
もし平文のe乗がNより小さければ、平文のe乗が暗号となる。
つまり、暗号文のe乗根が平文であるということ。

暗号文の11乗根を以下のようにpythonで計算すると、浮動小数点の精度が足りず不正確な値になってしまう。

c = 80265690974140286785447882525076768851800986505783169077080797677035805215248640465159446426193422263912423067392651719120282968933314718780685629466284745121303594495759721471318134122366715904
print(c ** (1 / 11))
#4243112443151148

精度高い計算を行うにはdecimalを使う。
decimal.Decimalで処理した値をint関数で整数値にする。
得られた数字がflagとなる。

import decimal

decimal.getcontext().prec = 1000
c = 80265690974140286785447882525076768851800986505783169077080797677035805215248640465159446426193422263912423067392651719120282968933314718780685629466284745121303594495759721471318134122366715904
print(int(round(decimal.Decimal(c) ** (decimal.Decimal(1) / decimal.Decimal(11)))))
#424311244315114354

得られた数値は一見ただの数字だが、2文字ずつ区切ってポリビオス暗号でデコードすると意味のあるメッセージになる。
簡単ではない問題。

振り返り

CpawCTF、とっても楽しかったです。
問題を解くたびに新しい知識が得られるので、人気があるのもわかります。
pythonで解いた問題もあって、競技プログラミングやっててよかったとも思えた瞬間。
AtCoderと並行しつつ、これからも楽しいCTFライフを送っていきたいです。

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?