김승현

[Dreamhack : Web] NoSQL-CouchDB 본문

Web/Dreamhack : Web

[Dreamhack : Web] NoSQL-CouchDB

kshind 2023. 2. 25. 16:22

문제 

couchDB 함께하기 실습 문제이다.

 

풀이

사이트에 접속하면 uid, upw 입력칸이 있고 login하는 칸이 있다.

app.post('/auth', function(req, res) {
    users.get(req.body.uid, function(err, result) {
        if (err) {
            console.log(err);
            res.send('error');
            return;
        }
        if (result.upw === req.body.upw) {
            res.send(`FLAG: ${process.env.FLAG}`);
        } else {
            res.send('fail');
        }
    });
});

여기가 uid, upw 등을 입력 받은 코드인데 강의에서도 얘기했듯이 입력받는 uid의 입력에 대한 검사가 없다. 

그렇다면 uid에 특수 구성요소인 _all_docs를 넣어서 하면 될 것 같다. 강의에 의하면 _all_docs에 대해서 조회했을 때

비밀번호는 없기 때문에 undefined가 되는데 이걸 만족시키기 위해선 전송할 때 upw 자체가 없어야 되는 것 같다.

나는 burp suite를 이용해봤다.

프록시 탭에서 이렇게 intercept했고 Action 버튼을 눌러서 repeater로 보내주었다.

repeater 탭에서 이렇게 전송할 정보들을 볼 수 있다.

그리고 upw가 undefined가 되도록 지워서 send했다.

그러면 오른 쪽 응답에 flag가 뜬 걸 볼 수 있다.

curl을 사용해서 하라고 하는데 어떻게 하는지 잘 모르겠어서 그냥 이렇게 다르게 풀었는데 풀렸다ㅎㅎ