CTF
Dreamhack
reversing
Reversing Basic Challenge #0
https://dreamhack.io/wargame/challenges/15
shellで以下のコマンドを使い、leetを見つける。
unzip <zip file>
strings <exe file> | less
ksn
https://ksnctf.sweetduet.info/
#by <https://github.com/Gakky598>
p = [70, 152, 195, 284, 475, 612, 791, 896, 810, 850, 737, 1332, 1469, 1120, 1470, 832, 1785, 2196, 1520, 1480, 1449]
S = ""
for i in range(len(p)):
S += chr(p[i]//(i+1))
print(S)
pwn.college
Program Misuse
level22
cpio
コマンドを使ってflagを得る模様。
manで使えそうなオプションを探してみると、次のものが見つかった
オプション名 | 説明 |
---|---|
-i |
圧縮をするように指定する |
-o |
解凍をするように指定する |
--to-stdout |
解凍した際にファイルの内容を出力する |
大まかな手順は
- flagを圧縮したファイルを/tmpなどに出力する
- 出力したファイルを展開する際に文字列を取り出す
find /flag | cpio -i > /tmp/flag.cpio
#
cpio -o --to-stdout < /tmp/flag.cpio
CryptHack
Base64
16進数文字列とバイト列の相互変換とヒントを参考にした。
import base64
print(base64.b64encode(bytes.fromhex('72bca9b68fc16ac7beeb8f849dca1d8a783e8acf9679bf9269f7bf')))
HackAll
Level 1
とりあえず、ctrl+uなどでソースコードを見てみる
flag
mypass
こんな感じで提出
いちいちBitwardenが反応する(笑)
Level 2
先ほどと同様にソースコードを覗いてみると、
atob("aGlyYWtlLWdvbWEh")
な文字列が見つかる
これをブラウザのデバッグコンソール(?)やnodejsなどで実行してみる
flag
hirake-goma!
Level 3
同じく、
4D 61 74 65 72 69 61 6C 69 7A 65
怪しい文字列を見つけられる
これはhttps://cyberchef.org/を使うのが早いかな?
flag
Materialize
Shiba CTF Gym
https://shibaken28.github.io/shiba-ctf/
radix starter 1
18 = 10 + 8
10 -> 1010
8 -> 1000
頭のいい人はこんなこと必要ない
flag
sctf{10010}
radix starter 2
13579 / 2 = 6789 ... 1
6789 /2 = 3394 ... 1
3394 / 2 = 1697 ... 0
1697 / 2 = 848 ... 1
848 / 2 = 424 ... 0
424 / 2 = 212 ... 0
212 / 2 = 106 ... 0
106 / 2 = 53 ... 0
53 / 2 = 26 ... 1
26 / 2 = 13 ... 0
13 / 2 = 6 ... 1
6 / 2 = 3 ... 0
3 / 2 = 1 ... 1
1 / 2 = 0 ... 1
flag
sctf{11010100001011}
ぜひpwshとかを使おう。。。
[convert]::ToString(13579, 2)
radix starter 3
- 10111 =>
= 16 + 4 + 2 + 12^{4} + 2^{2} + 2^{1} + 2^{0} - 10111 = 10000 + 111 = 16 + 7
flag
sctf{23}
pwshもどうぞ
[convert]::ToInt32(“10111”, 2)
radix starter 4
[convert]::ToInt32("1100110010101010", 2)
flag
sctf{52394}
radix starter 5
まず、2進数に変換してみる
3b = 3, 11
= 3, (8 + 3 )
= 0011, (1000 + 0011)
= 0011, 1011
次に、2進数を10進数に変換してみる
111011 =
🚩
sctf{59}
[convert]::ToInt32("3b", 16)
radix starter 6
97 / 16 = 6 ... 1 (頭のいい人は16, 32, 48, 64, 80, 96と考えない。。。)
6 / 16 = 0 ... 6
🚩
sctf{61}
[convert]::ToString(97, 16)
radix starter 7
9進数とか知らん。
バカ🤪(でもヒントになった)
8128 / 9 = 903 ... 1
903 / 9 = 100 ... 3
100 / 9 = 11 ... 1
11 / 9 = 1 ... 2
1 / 9 = 0 ... 1
これは10進から、9進への変換
これを逆に使った(絶対もっといい方法がある。。。)
o / 9 = l ... 8
l / 9 = m ... 2
m / 9 = n ... 1
n / 9 = 0 ... 8
なので、n = 8
よって、
🚩
sctf{5939}
radix starter 8
つまり、
print(pow(2, 64))
🚩
sctf{18446744073709551616}
ちなみにpwshの[Math]::Pow(2, 64)
だと値が切り上げられてしまった
追記
https://stackoverflow.com/questions/68573901/how-do-i-raise-x-to-the-power-of-y-in-powershell
こっちらしいね
[bigint]::Pow(2, 64)
AlpacaHack
https://alpacahack.com/challenges/simple-login
問題ファイルをダウンロードしてみる
tar -zxf <問題ファイル名>
で展開
展開されたディレクトリの中に入る
構成はこんな感じ
.
├── compose.yaml
├── db
│ └── init.sql
└── web
├── app.py
├── Dockerfile
├── requirements.txt
└── templates
├── index.html
└── login.html
localhost:3000
でアクセスできる
Flack製のログインページ
データはmysqlで管理している
- ユーザーネームとパスワードのいずれかが64文字以上
- ユーザーネームとパスワードのいずれかに"'"がある
と、はじかれる
🏗️
環境構築
burpを使ってみたいので、virtualbox + vagrantでGUI環境を用意する。WSLもあるけど、慣れるために使ってみる。ちなみに、DockerでVSC経由以外にGUI使う方法があったら教えてほしい。
参考: https://qiita.com/shotatanaka/items/ba8553d008130667d905
それぞれインストール済みなので、"workdir"などのディレクトリに移動して、Vagrantfileの雛型を生成する。生成するにはvagrant init
を実行(優しい)。
lsとかでVagrantfileがあるか確認しよう(cmd.exeならdir
、pwsh.exeならgci
だけど、わかりにくすぎる)。確認出来たらエディタで中身を覗こう(more
、gc
とかでも、、、)。
ファイルの中身はほとんどがコメントアウトで、必要なら適宜コメントアウトを外して、オプションを有効化する感じ。
コメントアウトにあるhttps://vagrantcloud.com/searchは繋がらないので、https://portal.cloud.hashicorp.com/vagrant/から検索する様子。
今回もubuntuを使用したいので、https://portal.cloud.hashicorp.com/vagrant/discover/ubuntuから選ぶと良さそう。"bionic64"を選択してみる。Vagrantfileではconfig.vm.box = "ubuntu/xenial64"
とする。また、config.vm.network "public_network"
をコメントアウトする(VSCなら"ctrl + /"!)。
とりあえず、必要最低限で起動してみる。起動するには、同じディレクトリで、vagrant up
を実行する。長いので、コーヒーでも飲みながら待とう。
🏗️
CpawCTF
https://ctf.cpaw.site/questions.php?qnum=19
zipなので、一旦展開して、開いてみる。
unzip misc100.zip -d misc100
すると、次のように、xmlを見つけることができる。
misc100
├── Configurations2
│ ├── accelerator
│ │ └── current.xml
│ ├── floater
│ ├── images
│ │ └── Bitmaps
│ ├── menubar
│ ├── popupmenu
│ ├── progressbar
│ ├── statusbar
│ ├── toolbar
│ └── toolpanel
├── content.xml
├── META-INF
│ └── manifest.xml
├── meta.xml
├── mimetype
├── settings.xml
├── styles.xml
└── Thumbnails
└── thumbnail.png
<meta:generator>LibreOffice/4.2.8.2$Linux_X86_64 LibreOffice_project/420m0$Build-2</meta:generator>
ここまでで、"zip"、"xml"、"LibreOffice"とくればおおよそ、いつも通りのやつだなと察しがつく。
解法としては、最初にダウンロードしたzipファイルの.zip
を.odt
やdoc
に変更して、LibreOfficeやMS Wordなどで開いてみる。ちなみに、最初、docx
にしてしまったときは、読み取れなかった。
🚩
cpaw{It_is_fun_isn't_it?}