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');
}
});
});
auth 부분을 보면 get방식으로 받은 uid를 그대로 이용해서 upw를 불러온다.
입력 값에 필터링 같은게 없기 때문에 특수 구성 요소를 이용하면 원하는 정보를 얻을 수 있다.
uid에 _all_docs를 입력하고 조회하면 upw는 undefined가 된다. result.upw와 입력한 upw가 일치해야
flag를 얻을 수 있기 때문에 upw가 undefined가 되어야 한다.
upw에 그냥 undefined를 넣거나 아무것도 입력하지 않으면 조건이 만족되지 않는다.
burp-suite를 이용해 패킷에서 upw를 지워주고 보내면 upw가 undefined가 되어서 조건문이 통과되면서 flag를 확인할 수 있다.
'웹해킹' 카테고리의 다른 글
Command Injection Advanced (0) | 2023.12.03 |
---|---|
드림핵 phpMyRedis 롸업 (0) | 2023.12.03 |
NoSQL (0) | 2023.12.03 |
드림핵 sql injection bypass WAF Advanced 롸업 (0) | 2023.12.03 |
드림핵 sql injection bypass WAF 롸업 (0) | 2023.12.03 |