필자가 좋아하는 언어 중 하나!

 

최근 CTF에서 nodejs express 문제가 나왔다.

express에서 routing 기능이 있는데, 선택 옵션을 추가할 수 있다는 걸 처음 알았다.

 

 

express Docs 내용 중, 아래 사진을 보면, Router에 대한 설명을 적어놓았다.

표에서 속성에 `caseSensitive` 라는 옵션이 있고, 만약 추가하지 않는다면 기본값으로 `대소문자를 구문하지 않고, /Foo와 /foo는 같은 경로로 해석한다.` 라고 되어 있다. 

https://expressjs.com/ko/api.html#:~:text=undefined-,express.Router(%5Boptions%5D),-Creates%20a%20new



그래서 테스트를 위해 다음과 같이 코드를 작성했다.

/* app.js */

const express = require("express");
const app = express();
const port = 39012;

const test_router = require("./router/test");

/* 서버 시작 */
app.listen(port, () => {
    console.log(`Server Running :${port}`);
})
/*   /router/test.js   */

const express = require("express");
const router = express.Router({caseSensitive: true});

router.get("/test", (req, res) => {
    res.send("asdf");
})

module.exports = router;

 

`/router/test.js` 파일을 보면 `express.Router({caseSensitive: ture})` 라고 Router 안에 옵션을 추가한 것을 볼 수 있다.

이렇게 설정을 하게 되면, URL을 대소문자 구분하여 처리하게 된다.

 

반대로, 옵션을 추가하지 않으면 `/test` 와 `/TEST` 는 정상적인 요청으로 받아드려 같은 응답을 하게 된다.