![]()
![]()
그냥 딸랑 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로 요청을 보냈다.
![]()