Giriş

Eski bir DSL modemin firmware’ini çıkarıp MIPS mimarisinde ROP zincirleri kurmayı denedim. Asıl zorluk, sınırlı ROM alanında işe yarar gadget bulmaktı.

MIPS gadget avı

MIPS’in gecikmeli dal (delay slot) davranışı, gadget semantiğini x86’dan farklı kılıyor. ropper’ın MIPS desteğiyle başladım ama çoğu zinciri elle doğrulamak gerekti.

lw $ra, 0x1c($sp); jr $ra  → stack pivot adayı

Stack pivot

Yığını kontrol edilen bir bölgeye taşıyıp küçük zincirlerle system() benzeri bir çağrıya ulaştım; alan kısıtı yüzünden payload’ı parçalara böldüm.

Sonuç

Cihaz desteği biten bir modeldi; üreticiye bildirim gönderildi, EOL yanıtı alındı. Test kendi cihazımda yapıldı.