[#CTF](CTF) [#Writeup](Writeup) Crypt - Simple Substitution Cipher - ```問題文, 以下の暗号文を復号してください。 暗号文: synt{tA0iEFckNRiG} 解答形式:flag{************} ``` - 換字式暗号。Simpleといっているのでシーザー暗号っぽい。syntがflagになるまでずらせばいいっぽい。 - "s"-"f" = 13なので、それぞれ13文字引く - [https://dencode.com/ja/cipher/caesar](https://dencode.com/ja/cipher/caesar) で13文字ずらす - Administrator Hash (NLTM hash) - `pypykatz lsa minidump lsass.DMP` - ![[assets/64d0cd317aa049001b4da8ff.png]] - Administrator Password - `hashcat -m 1000 036dac4f519817e0f6ec28d80ab42205 Downloads/rockyou.txt` - NLTMが1000番 [example_hashes hashcat wiki](https://hashcat.net/wiki/doku.php?id=example_hashes) FORENSICS - The Place of The First Secret Meeting - vhdがダウンロードできるので、マウント - `hdiutil attach -imagekey diskimage-class=CRawDiskImage Downloads/USB1.vhd` - The Deleted Confidential File / They Cannot Be Too Careful - `hdiutil attach -nomount -imagekey diskimage-class=CRawDiskImage Downloads/USB1.vhd` - `sudo dd if=/dev/disk4s1 of=tmp.iso` - ```fls, $ fls -f fat16 tmp.iso r/r 3: USB1 (Volume Label Entry) d/d 6: System Volume Information d/d 7: $RECYCLE.BIN d/d 9: .fseventsd r/r * 10: _.jpg d/d 12: Pictures d/d * 14: MSI66ce0.tmp d/d * 16: MSI8ed80.tmp d/d * 18: MSI68d6a.tmp r/r * 20: 重要.zip v/v 1080707: $MBR v/v 1080708: $FAT1 v/v 1080709: $FAT2 V/V 1080710: $OrphanFiles ``` - `icat -f fat16 tmp.iso 20 > 重要.zip` - zipにパスワードがかかっとるので、zip2john -> hashcatをしようとする - `zip2john 重要.zip > 重要.zip.hash` - .hashにflag文字列がある - .hashに、$zip2$...$/zip2$という形式のハッシュ文字列が出てくる - WinZIPっぽい (13600) [https://hashcat.net/wiki/doku.php?id=example_hashes](https://hashcat.net/wiki/doku.php?id=example_hashes) - `hashcat -m 13600 "$zip2$...$/zip2quot; rockyou.txt` - They Cannot Be Too Carefulのパスワードが出てくる NW - Analysis - ```問題文, あなたは組織内で発生した情報セキュリティインシデントを調査しています。 社内で攻撃の踏み台とされた端末(10.200.200.15)から外部宛の通信を調査しています。 プロキシログ(proxylog.txt)から不審なサーバ(C&C サーバ)宛へのログを見つけて、接続先の IP アドレスを特定してください。 解答形式:flag{**********}(IP アドレス) ``` - CSVでログが与えられる。destination addressを集計してみると、以下の頻度で通信が行われていることがわかる。 - `{'HIER_DIRECT/182.22.25.252': 563, 'HIER_DIRECT/216.58.197.163': 1854, 'HIER_DIRECT/183.79.217.124': 284, 'HIER_DIRECT/172.217.26.46': 101, 'HIER_DIRECT/183.79.250.123': 82, 'DIRECT/23.42.76.131': 13, 'HIER_DIRECT/172.217.25.69': 46, 'DIRECT/117.18.232.240': 13, 'DIRECT/142.251.42.163': 14, 'HIER_DIRECT/2.57.80.99': 2}` - 一番頻度が少ないアドレスがC&Cサーバーっぽいので、それを回答すると正解 Programming - Grayscale Matrix - ファイルをDLすると、U.txt, P.txt, L.txtがある - 行列のPLU分解なんじゃないか? と察しが付く - [https://www.headboost.jp/docs/linear-algebra-for-programmers/factorization/lu/](https://www.headboost.jp/docs/linear-algebra-for-programmers/factorization/lu/) - numpyでファイル読み取って行列に変換し、p.dot(l).dot(u)し、PILを使って画像表示するとフラグが浮かび上がる Web - Basic - ```問題文, 情報セキュリティ担当のジョナサンは、退職者が利用していたパソコンの通信ログを確認していたところ、Basic 認証でアクセス制限がかけられているhttp://10.10.10.6/Aw6dfLUM/ へアクセスしていることが判明しました。 提供したパソコンの通信ログ(Basic.pcapng)を確認して認証情報を探し出してください。 フラグはその Basic 認証でのログイン後のページにあります。 解答方式:flag{************} ``` - 解法 - パケットキャプチャファイルをWiresharkで開く - httpフィルタをかける - 何回かBasic認証を試しているっぽいことがわかるので、最後に成功しているとこを見る - ![[assets/64d0cd203abfa7001ca20cdb.png]] - これで開くとフラグを得られる - Discovery - ```問題文, ゲーム会社に勤めているジョナサンが管理しているサイト( http://10.10.10.6/Wg6LQhmX/ ) 配下のディレクトリに、機密情報(flag)が記載されたテスト用の html ファイルが公開されていると連絡を受けました。 ジョナサンはサイトにあるリンクたどって該当ファイルを見つけ出そうとしましたが、うまくいきませんでした。 攻撃者はどのようにして機密情報(flag)を見つけだしたのでしょうか? あなたは機密情報(flag)を見つけ出し記載されたフラグを確認してください。 解答方式:flag{************} ``` - [http://10.10.10.6/Wg6LQhmX/](http://10.10.10.6/Wg6LQhmX/) にアクセスしてもForbidden - 配下でどこかしら見れるとこがあるはずなので、ディレクトリ探索を行う - ディレクトリ探索ツールとして[dirb](https://dirb.sourceforge.net/)がある - 辞書としてこれを使う: [dirb/wordlists/common.txt at master · v0re/dirb · GitHub](https://github.com/v0re/dirb/blob/master/wordlists/common.txt) - `dirb http://10.10.10.6/Wg6LQhmX/ common.txt -o output.txt` - gamesというフォルダがあることがわかる - `ffuf -w Downloads/common.txt -u http://10.10.10.6/Wg6LQhmX/games/FUZZ.html` - これで、 [http://10.10.10.6/Wg6LQhmX/games/admin.html](http://10.10.10.6/Wg6LQhmX/games/admin.html) があることがわかるので、アクセスすればフラグが手に入る PWN - Festival - ↓でアンダーフロー起こせば勝てる - ![[assets/64d0cd2bfbf1b3001be234e1.png]] - ```解法, nc 10.10.10.15 1002 ___________ __ .__ .__ \_ _____/___ _______/ |_|__|__ _______ | | | __)/ __ \ / ___/\ __\ \ \/ /\__ \ | | | \ ___/ \___ \ | | | |\ / / __ \| |__ \___ / \___ >____ > |__| |__| \_/ (____ /____/ \/ \/ \/ \/ Balance : 1000 ==Menu== 1. Ramune : 100 2. Yakitori : 200 3. Beer : 300 4. Yakisoba : 500 5. Flag : 1000000000 Staff > What do you want to buy? Staff > Input menu number. You > 5 Staff > How many? You > 10000000000 Staff > flag{gwAZLDpEHAg6} ```