WEB hacking/드림핵(dreamhack)

드림핵 baby-Case WriteUp

Roronoa 2025. 1. 26. 15:17
반응형

문제풀이

소스코드

nginx.conf

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/>;
        }

    }

}

/shop , /shop/ 접근 불가 하지만 대문자(/SHOP)로 우회 가능

 

app.js

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

const app = express()
const PORT = 3000
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

    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}`)
})

leg 값이 FLAG이면 403 에러

하지만 search에서 leg를 upper하기 때문에 소문자로 flag입력시 FLAG가 됨

 

FLAG

반응형

'WEB hacking > 드림핵(dreamhack)' 카테고리의 다른 글

드림핵 삐리릭... 삐리리릭...  (0) 2025.02.02
드림핵 simple-phparse WriteUp  (0) 2025.01.26
드림핵 access-log WriteUp  (0) 2025.01.26
드림핵 baby xss WriteUp  (0) 2025.01.26
드림핵 Where-is-localhost WriteUp  (0) 2025.01.26