Video: A simple Format String exploit example - bin 0x11 2024
C dilinde en popüler metin çıktı işlevlerinden biri olmanın yanı sıra printf () en güçlüdür. Katılan C programcıların bile bellekten okumayacağı dolgu ve hizalama seçenekleri ile her türlü değişkeni benzersiz şekilde biçimlendirebilir.
printf () işlevi yalnız değildir. Formatlama gücünden de yararlanan birçok kardeş ve kuzeni vardır. En yararlı varyasyonlardan biri sprint () 'dır.
Sprint () işlevinin yaptığı şey, printf () işlevinden bir arabellekte olduğu gibi biçimlendirilmiş çıktıları kaydedin. İşte biçimi:
sprintf (buffer, format, variables);
Önceki satırda buffer, biçimlendirilmiş çıktıın saklandığı bir char dizisidir. Geri kalan argümanlar printf () ile aynıdır. format bir biçimlendirme dizesidir: Metin, kaçış dizileri ve dönüştürme karakterleri kullanır. Formatlama dizesine doldurulan değişkenlerin ve anlık değerlerin listesi, aşağıdaki kodda gösterildiği gibi değişkenlerle temsil edilir.
#include int main () {doğum günü [12]; int gün, ay, yıl; printf ("Doğum tarihinizi girin (1-12):"); scanf ("% d", & ay); printf ("Doğum gününüzü girin:"); scanf ("% d", & gün); printf ("Doğum yılınızı girin:"); scanf ("% d", & yıl); sprintf (doğum günü, "% d /% d /% d", ay, gün, yıl); printf ("Size% sn'de doğum gününüzü kutluyorum", doğum günü); return (0);}
Yukarıdaki kod, formatlanmış bir tarihi bir dize olarak kaydetmek için sprint () kullanan örnek bir programı göstermektedir. Ay, gün ve yıl değişkenlerinden gelen değerler standart tarih biçimine yerleştirilir ve daha sonra doğum günü tamponuna sprint () işlevi tarafından kaydedilir. Printf () deyimi sonucu görüntüler.
Sprint () 'in çalışması için en iyi yol, karmaşık sayıları ve biçimlendirilmiş çıktıları daha sonraki görüntüleme veya işleme için saklamaktır. Örneğin, printf () yerine sprint () işlevini kullanabilir ve çıkışın doğru olduğunu onaylamak için programın başka bir yerinde kodu yerleştirebilirsiniz.
Sprint () işlevinin nasıl kullanıldığına bakılmaksızın, programlama alet sandığında kullanışlı olmanız için değerli bir araç bulacaksınız.