위 문제는 조금 당혹스러울 거다.
드림핵에서 알려준 "../flag" 를 쓰면 될 것 같은데 왠 undefined라고 입력창에 뜨면서 출력으론 아무 값도 안나오니 말이다.
이 문제는 두 가지 방법으로 풀 수 있는 문제이다.
첫번째는 정석인 프록시 사용이다.
프록시는 구글링 해보길 바란다. 여긴 문제풀이 해주는 거기 때문에 그런 기본은 배워오자.
프록시 사용을 위해 Burp suite를 사용할거다 사용법과 설치도 구글링을 해라
구글링이 답이다.
절대로 필자가 귀찮아서가 아니다
두번째는 자바스크립트를 이용한 풀이이다.
꼼수라고도 할 수 있겠다.
일단 취약점을 찾아보자.
주어진 코드의 취약점은 다음과 같다.
@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)
app.py의 중간 코드이다.
user를 POST 받으면, json파일에 저장된 userid를 불러 그 아이디로 검색하는 방식이다.