İçeriğe geç

PortSwigger Business Logic Lab 5: Low-level Logic Flaw

Bu labda, PortSwigger Web Security Academy’nin Business Logic kategorisindeki “Low-level logic flaw” senaryosunu inceliyoruz. Sepete ürün eklerken uygulanan adet sınırına rağmen aynı isteğin tekrar gönderilebilmesi, toplam tutarın tam sayı sınırını aşarak negatif değere dönmesine neden oluyor. Amacımız, bu tam sayı taşmasından yararlanıp sepet tutarını mevcut bakiyemizle ödenebilecek bir seviyeye getirerek “Lightweight l33t leather jacket” ürününü satın almak. Lab bağlantısı.

Dürüst olacağım, gece geç saatlerde labı çözmek için oturmuştum. Ancak hem uykumun baskın gelmesi hem de sudan sebeplerden laba odaklanamadım. Sabah uyandığımda çözüme baktım. Herhâlde keşfetmem çok uzun zaman alırdı. Aklıma gelmeyecek bir yerden çözümü oldu labın.

Son derece her yer korunaklı gözüküyor ama sanırsam büyük numaralarda arka planda Java süreçleri doğru handle edemiyor. Değişkenlerin sınırlarına geldiğimizde sayılar negatiften geri başlıyor. Ne demek istiyorum? Ön tarafta bir ürün alırken max 99 adet tek seferde almanıza izin veriyor ve bunun kontrolü backend’de de var. Ancak önemli olan isteğin tekrar edilebiliyor olması. Sürekli yeni alım yapıldığında toplam ödenilmesi gereken fiyat da artacak ama bu sonsuza mı gidecek?

Screenshot

Yukarıdaki gibi bir yapı oluşturdum kontrollü bir şekilde sayı negatif olduğunda durdurabilmek için.

Screenshot

Yukarıdaki görselde görüldüğü gibi bakiye artıyordu sürekli ancak belirli bir noktadan sonra bakiye negatife döndü.

Screenshot

Şimdi başka ürünler ekleyerek aslında negatife dönmüş olan bakiyeyi pozitife çekebilirim. Şu an bakiye -20711351.96 ve 13.83 dolara High-End Gift Wrapping almak istersem yaklaşık pozitif yapabilmek için 149756702 tane almam lazım. Bu da 99 tane istek için 1512693 adet ediyor. Buna sahip bir for döngüsü kurdum aşağıdaki gibi.

Screenshot

Birkaç hatalı işlemden sonra bütün saldırıya en baştan başlamak gerekti ama sonunda gördüğünüz gibi 0.55 dolara alınabilecek hale getirdim.

Screenshot

Ve lab çözüldü.

Screenshot
Kategori:Web

İlk Yorumu Siz Yapın

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir