DevTools CTF is an educational web application that presents cybersecurity challenges solvable exclusively through browser developer tools.
- Chrome/Chromium
- Firefox
- Safari
- Edge
Note: Internet Explorer is not supported due to limited developer tools functionality.
docker build -t devtools-ctf . docker run -d -p 4000:8080 -e PORT=8080 devtools-ctfdocker-compose up -dAccess the application at http://localhost:3000
Here is a quick guide to develop more levels
Create a new .hbs file in pages (e.g. my-level.hbs) *use ! + Tab to generate basic HTML structure, or copy-paste another .hbs file
example for body content in a level:
{{flag}} serves as a placeholder for data injection from the server
add to config.ts the following:
export default { levels: { /* {... Other levels}*/ myLevel: createLevelConfig('MY_LEVEL', { url: 'level-123456', flag: createFlag('myFl4G') }) } }NOTE: don't copy-paste like an idiot, you might delete other levels by accident.
nest g co myLevel controllers --flatThis command will create a new my-level.controller.ts file inside controllers/ directory. --flat means it will not create a my-level/ directory too.
To create a route that displays content, add @Get() to specify your request method, and @Render to specify which page you want to render
import config from '~/config'; const levelConfig = config.levels.myLevel @Controller(levelConfig.url) export class MyLevelController { @Get() @Render('my-level.hbs') render() { //this defines the variables for my-level.hbs return { flag: levelConfig.flag, }; } }to add more routes just learn nestjs, and put them inside the relevant controller.