https://dreamhack.io/wargame/challenges/732
첫 페이지다. 이름만 입력하면 간단하게 로그인되는 페이지다.
1로 로그인해보았다. `산타 사설 거래소` 버튼과 `드림 유동성 풀` 버튼이 있는데 산타부터 가보겠다.
DHH, DHC, DHD가 화폐의 일종인 것 같다. DHH를 빌릴 수 있고 빌린 화폐를 다른 화폐로 교환이 가능하다.
DHC를 담보로 내서 DHD를 빌릴 수 있다. 예금 기능도 있는 것으로 보인다.
@app.route("/dream/lend", methods=['POST'])
def dream_loan():
value = float(request.form['value'])
dhc_price = get_price('DHC')
dhd_price = get_price('DHD')
max_lend = session['col_DHC'] * dhc_price / dhd_price * 0.8
print(max_lend)
if session['DHD'] + value < 0.0:
return render_template("dream.html", session=session, message="더 갚으시게요...?")
if max_lend < value:
return render_template("dream.html", session=session, message="그만큼 빌리기에는 담보가 부족합니다!")
session['DHD'] += value
session['debt_DHD'] += value
return render_template("dream.html", session=session, message="대출 완료!")
코드를 잘 확인해보면 빌릴 수 있는 값의 한도가 있다. max_lend라는 값인데, 이는 한 번 빌리는 데에 대한 한도이다. 작은 값으로 여러번 빌리면 큰 돈을 가져올 수 있을 것이다.
DHH를 9000 빌렸다.
DHH 9000을 모두 DHC로 바꿨다.
DHC 9000을 모두 담보로 제출했다.
DHD를 5000씩 2번 빌렸다.
DHD 10000을 모두 DHH로 바꿨다.
대출한 DHH를 갚고 flag를 구매할 만큼의 DHH를 소유하고 있다.
짜잔
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
flag로 제공된 url을 들어가보면서 flash loan이라는 것에 대해 알게 됐다. 문제는 business logic error로 풀긴 했으나 제작자가 의도한 문제 풀이 방법은 이것이 아닌 것 같다. flash loan으로 풀어보려고 했으나 어려우니 다음에 시간 널널할 때 시도해보겠다.
'드림핵' 카테고리의 다른 글
[드림핵] login-1 풀이 (1) | 2024.01.13 |
---|---|
[드림핵] baby-sqlite 풀이 (2) | 2024.01.10 |
[드림핵][wargame.kr] type confusion 풀이 (2) | 2024.01.10 |
[드림핵] web-misconf-1 풀이 (0) | 2024.01.08 |
[드림핵] proxy-1 풀이 (0) | 2024.01.08 |