Big Binary Files Upload (PostgreSQL)
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
PostgreSQL, büyük veri türlerini, örneğin resimler veya PDF belgeleri gibi, depolamak için tasarlanmış büyük nesneler olarak bilinen bir yapı sunar ve bu nesnelere pg_largeobject
tablosu aracılığıyla erişilir. Bu yaklaşım, verilerin dosya sistemine geri aktarılarak orijinal dosyanın tam bir kopyasının korunmasını sağladığı için COPY TO
işlevine göre avantajlıdır.
Bu tabloda tam bir dosya depolamak için, pg_largeobject
tablosunda bir nesne oluşturulmalı (bir LOID ile tanımlanır) ve ardından bu nesneye her biri 2KB boyutunda veri parçaları eklenmelidir. Bu parçaların tam olarak 2KB boyutunda olması (son parçanın istisna olabileceği durumlar hariç) gereklidir, böylece aktarma işlevi doğru çalışır.
İkili verilerinizi 2KB parçalarına bölmek için aşağıdaki komutlar çalıştırılabilir:
Her dosyayı Base64 veya Hex'e kodlamak için aşağıdaki komutlar kullanılabilir:
Önemli: Bu süreci otomatikleştirirken, 2KB'lık açık metin baytları parçaları göndermeyi garanti edin. Hex kodlu dosyalar, boyutun iki katına çıkması nedeniyle her parça için 4KB veri gerektirirken, Base64 kodlu dosyalar ceil(n / 3) * 4
formülünü takip eder.
Büyük nesnelerin içeriği, hata ayıklama amaçları için şu şekilde görüntülenebilir:
Using lo_creat
& Base64
İkili verileri depolamak için önce bir LOID oluşturulur:
Hassas kontrol gerektiren durumlarda, örneğin Blind SQL Injection istismarında, sabit bir LOID belirtmek için lo_create
tercih edilir.
Veri parçaları daha sonra şu şekilde eklenebilir:
Büyük nesneyi kullanımdan sonra dışa aktarmak ve potansiyel olarak silmek için:
lo_import
ve Hex Kullanımı
lo_import
fonksiyonu, büyük bir nesne için bir LOID oluşturmak ve belirtmek için kullanılabilir:
Oluşturma işleminden sonra, her sayfa için veri eklenir ve her parça 2KB'yi geçmez:
Veri aktarımını tamamlamak için, veriler dışa aktarılır ve büyük nesne silinir:
Büyük nesnelerin ACL'leri (Erişim Kontrol Listeleri) olabileceği belirtilmiştir, bu da kullanıcı tarafından oluşturulan nesnelere bile erişimi kısıtlayabilir. Ancak, izin verici ACL'lere sahip eski nesneler hala içerik sızdırma için erişilebilir olabilir.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)