반응형
문제풀이
소스코드
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가 됨
반응형
'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 |