본문 바로가기

Dream hack/LEVEL 1

Dreamhack (pathtraversal)

userid를 입력 받는데, 어떠한 검사도 하지 않는다.

@app.route('/get_info', methods=['GET', 'POST'])
def get_info():
    if request.method == 'GET':
        return render_template('get_info.html')
    elif request.method == 'POST':
        userid = request.form.get('userid', '')
        info = requests.get(f'{API_HOST}/api/user/{userid}').text
        return render_template('get_info.html', info=info)

 

userid에 ../flag를 입력하면, /api/flag로 넘어가서

@app.route('/api/flag')
@internal_api
def flag():
    return FLAG

 

flag를 반환받는다.

 

예상되는 payload를 입력한다.

 

하지만, {} 로 flag가 출력되지 않는다.

burp suite를 통해 확인해보자.

 

예상한 userid 값과 다르다.

userid가 undefined로 되어있다.

이 값을 다시 ../flag로 바꿔주자.

 

원하는 payload로 바꾸었다.

 

그러면, flag가 출력된다.

 

 

'Dream hack > LEVEL 1' 카테고리의 다른 글

Dreamhack (image-storage)  (0) 2023.03.27
Dreamhack (Carve Party)  (0) 2023.03.26
Dreamhack (csrf-2)  (0) 2023.03.24
Dreamhack (command-injection-1)  (0) 2023.03.24
Dreamhack (xss-2)  (0) 2023.03.24