드림핵 youth-Case 풀이

사랑해요·2026년 9월 25일

드림핵 문제 풀이

목록 보기
15/16

문제 설명

사이트 확인

그냥 딸랑 hi guest만 나와있는데

코드 확인

const words = require("./ag")
const express = require("express")

const PORT = 3000
const app = express()
app.set('case sensitive routing', true)
app.use(express.urlencoded({ extended: true }))

function search(words, leg) {
    return words.find(word => word.name === leg.toUpperCase())
}

app.get("/",(req, res)=>{
    return res.send("hi guest")
})

app.post("/shop",(req, res)=>{
    const leg = req.body.leg.toLowerCase()

    if (leg == 'flag'){
        return res.status(403).send("Access Denied")
    }

    const obj = search(words,leg)

    if (obj){
        return res.send(JSON.stringify(obj))
    }

    return res.status(404).send("Nothing")
})

app.listen(PORT,()=>{
    console.log(`[+] Started on ${PORT}`)
})
events {
    worker_connections  1024;
}

http {
    server {
        listen 80;
        listen [::]:80;
        server_name  _;
        
        location = /shop {
            deny all;
        }

        location = /shop/ {
            deny all;
        }

        location / {
            proxy_pass http://app:3000/;
        }

    }

}

nginx를 보면 /shop에 대한 모든 요청을 거부하고 있다.

풀이

https://velog.io/@nobody09/Nodejsnginx-Bypass-nginx-ACL-Rules
이 글을 보니 nginx 1.22.0 버전은 \xa0으로 우회할 수 있다고 한다.

이제 flag 문자를 우회해야한다.

찾아보니 f와 l이 합쳐진 단일 문자가 있다고 한다.
그걸 이용해서 burp suite repeater로 요청을 보냈다.

profile
중등해커

0개의 댓글