Portswigger-Low-level logic flaw
풀이
wiener:peter 계정을 이용해 로그인할 수 있다. 로그인하여 Lightweight l33t leather jacket 을 의도치 않은 가격으로 구매할 수 있다.
한 번에 100개 이상의 물건을 담을 수 없다. 또한 음수 개의 상품을 담을 수 없다.

99개 단위로 반복해서 추가는 할 수 있다. burp repeater를 이용해 계속 추가하다보면 전체 가격이 overflow 되어 음수로 변한다. 음수 상태에서는 구매가 불가하다.
정확히 얼마부터 overflow가 되는지는 모르겠다. 소수점이 있는것으로 보아 소수같은데, 그 범위가 너무 작다. 그렇다고 정수에서 보자니 int도 아니고 short도 아니고 애매한 자료형인가 의문이다.

조금 더 컨트롤을 섬세하게 할 수 있는 싼 가격의 아이템을 이용해 총 금액을 결제할 수 있는 100$ 이하의 양수 가격으로 다시 overflow 시켰다. 전체 값을 양수로 만들고 결제하니 성공했다.

이 취약점은 한 번에 up/down 가능한 물건의 수는 확인했지만 전체 물건 수는 고려하지 않았고, 전체 가격에 대해 확인했지만 전체 가격이 overflow되는 경우는 고려하지 않았기에 발생했다.
tags: writeup, business-logic-vul, wstg-busl-01, web hacking, integer overflow underflow