• 24-06-2010, 03:37:25
    #10
    Üyeliği durduruldu
    buyrun arkadaşlar;

    image2.php

    <script type="text/javascript">
    
    <!--
    function yenile()
    {
    var bir = new Date();
    var iki = bir.getTime();
    
    document.getElementById('captcha').src = 'image.php?x='+ iki;
    }
    -->
    </script>
    
    <?php
    # Session oturumunu baslatiyoruz.
        session_start();
    # Eger sayfaya post yapilmissa guvenlik kodunu kontrol edelim.
        if($_POST)
        {
            # POST ile kullanicinin girdigi guvenlik kodunu alalim.
            $gonderilen    = $_POST['guvenlik'];
            
            # Eger bossa uyari verelim. Bos degilse kontrol edelim.
            if(empty($gonderilen))
            {
                echo 'Guvenlik kodunu bos birakamazsiniz!';
            }
            else
            {
                if($_SESSION['guvenlik']['deger']==$gonderilen)
                {
                    # Guvenlik kodu dogru girildi. Burada mail gonderimi, kayit vb. islemlerinizi yapabilirsiniz.
                    echo 'Guvenlik kodu dogru. Tesekkurler.';
                    unset($_SESSION['guvenlik']['deger']);
                }
                else
                {
                    echo 'Hatali Guvenlik Kodu';
                }
            }
        }
    
    ?>
    
    
    
    <form action="" method="post">
    <img id="captcha" src="image.php" /><br><input type="text" name="guvenlik" id="guvenlik" /><input type="button" onClick="yenile();" value="Yeni Kod" /><br><input type="submit" value="Gonder" />
    </form>
  • 24-06-2010, 04:24:50
    #11
    Yanlız dikkat edin ufak bir açık bulunmaktadır sistemde.
    Güvenlik kodunun doğruluğu sağlandıkdan sonra session değeri silinmiyor. Bunu yapmaz iseniz;
    kullanıcı image.php yi bir kere çağırır ve güvenlik kodunu elle manuel olarak girer ve bir sonraki requestlerde image.php yi çağırmadığından dolayı güvenlik kodu aynı olacağından pek bir işe yaramaz.
  • 24-06-2010, 04:44:25
    #12
    Üyeliği durduruldu
    mustafa90 adlı üyeden alıntı: mesajı görüntüle
    Yanlız dikkat edin ufak bir açık bulunmaktadır sistemde.
    Güvenlik kodunun doğruluğu sağlandıkdan sonra session değeri silinmiyor. Bunu yapmaz iseniz;
    kullanıcı image.php yi bir kere çağırır ve güvenlik kodunu elle manuel olarak girer ve bir sonraki requestlerde image.php yi çağırmadığından dolayı güvenlik kodu aynı olacağından pek bir işe yaramaz.
    güvenlik kısmına pek aklım ermezde;

            
            $gonderilen    = $_POST['guvenlik'];
            
            # Eger bossa uyari verelim. Bos degilse kontrol edelim.
            if(empty($gonderilen))
            {
                echo 'Guvenlik kodunu bos birakamazsiniz!';
            }
            else
            {
                if($_SESSION['guvenlik']['deger']==$gonderilen)
                {
                    # Guvenlik kodu dogru girildi. Burada mail gonderimi, kayit vb. islemlerinizi yapabilirsiniz.
                    echo 'Guvenlik kodu dogru. Tesekkurler.';
                }
                else
                {
                    echo 'Hatali Guvenlik Kodu';
                }
            }
    $_POST['guvenlik'] değerini yollamadığında Guvenlik kodunu bos birakamazsiniz! uyarısı veriyor zaten işleme devam etmiyor ki.

    kafam durdu gerçi anlayamadığım birşeyde olabilir
  • 24-06-2010, 04:46:35
    #13
    ChatLakTurK adlı üyeden alıntı: mesajı görüntüle
    buyrun arkadaşlar;

    image2.php

    <script type="text/javascript">
    
    <!--
    function yenile()
    {
    var bir = new Date();
    var iki = bir.getTime();
    
    document.getElementById('captcha').src = 'image.php?x='+ iki;
    }
    -->
    </script>
    
    <?php
    # Session oturumunu baslatiyoruz.
        session_start();
    # Eger sayfaya post yapilmissa guvenlik kodunu kontrol edelim.
        if($_POST)
        {
            # POST ile kullanicinin girdigi guvenlik kodunu alalim.
            $gonderilen    = $_POST['guvenlik'];
            
            # Eger bossa uyari verelim. Bos degilse kontrol edelim.
            if(empty($gonderilen))
            {
                echo 'Guvenlik kodunu bos birakamazsiniz!';
            }
            else
            {
                if($_SESSION['guvenlik']['deger']==$gonderilen)
                {
                    # Guvenlik kodu dogru girildi. Burada mail gonderimi, kayit vb. islemlerinizi yapabilirsiniz.
                    echo 'Guvenlik kodu dogru. Tesekkurler.';
                }
                else
                {
                    echo 'Hatali Guvenlik Kodu';
                }
            }
        }
    
    ?>
    
    
    
    <form action="" method="post">
    <img id="captcha" src="image.php" /><br><input type="text" name="guvenlik" id="guvenlik" /><input type="button" onClick="yenile();" value="Yeni Kod" /><br><input type="submit" value="Gonder" />
    </form>
    çok tşkler reis.
  • 24-06-2010, 04:58:19
    #14
    Kısaca anlatayım;

    image.php dosyası çağırıldığı zaman session'a bir değer atanıyor(dikkat! sadece image.php dosyası çağırıldığı zaman).


    Bu güvenlik kodunu aşmak için gerekli adımları sırası ile yazayım.

    1. güvenlik kodu bulunan form normal bir şekilde doldurulur ve güvenlik kodu bir yere not edilir (normal bir kullanıcı gibi verileri doldurabilirsiniz)

    2. form submit edilir ve güvenlik kodu kontrolü yapılır. (Güvenlik kodunun doğruluğu tespit edildiğinde güvenlik kodunun mevcut değeri silinmiyor.)

    3. php ile yapılan http isteklerinde (örnek: file_get_contents, curl), html yi işleyemeyeceğinden dolayı image.php'ye istek yollamaz (Bu durumda önceki güvenlik kodunun session değeri silinmediğinden dolayı, güvenlik kodu yine aynısı kalır ) . Form verilerini ve not ettiğimiz güvenlik kodunu girip formu yolladığımızda güvenlik kodumuz yine doğru olacaktır çünkü hiç değişmedi zaten

    Not: bu işlemi başka yöntemlerlede yapabilirsiniz. Mesela; ilk iki adımı aynı şekilde yapıp, üçüncü adımı browser ilede yapabilirsiniz. Bunu yapabilmek için; üçüncü adıma geldiğinizde image.php nin request edilmesine izin vermezsiniz ve bu sayede session değeri değişmez.

    Saat sabahın körü, umarım düzgün yazmışımdır
  • 24-06-2010, 05:38:54
    #15
    Üyeliği durduruldu
    SefaCan adlı üyeden alıntı: mesajı görüntüle
    çok tşkler reis.
    rica ederim
    mustafa90 adlı üyeden alıntı: mesajı görüntüle
    Kısaca anlatayım;

    image.php dosyası çağırıldığı zaman session'a bir değer atanıyor(dikkat! sadece image.php dosyası çağırıldığı zaman).


    Bu güvenlik kodunu aşmak için gerekli adımları sırası ile yazayım.

    1. güvenlik kodu bulunan form normal bir şekilde doldurulur ve güvenlik kodu bir yere not edilir (normal bir kullanıcı gibi verileri doldurabilirsiniz)

    2. form submit edilir ve güvenlik kodu kontrolü yapılır. (Güvenlik kodunun doğruluğu tespit edildiğinde güvenlik kodunun mevcut değeri silinmiyor.)

    3. php ile yapılan http isteklerinde (örnek: file_get_contents, curl), html yi işleyemeyeceğinden dolayı image.php'ye istek yollamaz (Bu durumda önceki güvenlik kodunun session değeri silinmediğinden dolayı, güvenlik kodu yine aynısı kalır ) . Form verilerini ve not ettiğimiz güvenlik kodunu girip formu yolladığımızda güvenlik kodumuz yine doğru olacaktır çünkü hiç değişmedi zaten

    Not: bu işlemi başka yöntemlerlede yapabilirsiniz. Mesela; ilk iki adımı aynı şekilde yapıp, üçüncü adımı browser ilede yapabilirsiniz. Bunu yapabilmek için; üçüncü adıma geldiğinizde image.php nin request edilmesine izin vermezsiniz ve bu sayede session değeri değişmez.

    Saat sabahın körü, umarım düzgün yazmışımdır
    şimdi anladım hocam

    session değeri dediğiniz gibi image.php çağırıldığından değişiyor.
    bi kere çağırdım diyelim captcha kodu =12345678

    <form action="image2.php" method="post">
    <input type="text" name="guvenlik" id="guvenlik" value="12345678" /><input type="submit" value="Gonder" />
    </form>
    ben bu kodu kullanarak chaptca yı aşmış olurum.


    Sabahın köründe üşenmeden beni aydınlattığınız için çok teşekkürler


    sanırım böyle yaparsak açığı kapatmış oluruz;

    <script type="text/javascript">
    
    <!--
    function yenile()
    {
    var bir = new Date();
    var iki = bir.getTime();
    
    document.getElementById('captcha').src = 'image.php?x='+ iki;
    }
    -->
    </script>
    
    <?php
    # Session oturumunu baslatiyoruz.
        session_start();
    # Eger sayfaya post yapilmissa guvenlik kodunu kontrol edelim.
        if($_POST)
        {
            # POST ile kullanicinin girdigi guvenlik kodunu alalim.
            $gonderilen    = $_POST['guvenlik'];
            
            # Eger bossa uyari verelim. Bos degilse kontrol edelim.
            if(empty($gonderilen))
            {
                echo 'Guvenlik kodunu bos birakamazsiniz!';
            }
            else
            {
                if($_SESSION['guvenlik']['deger']==$gonderilen)
                {
                    # Guvenlik kodu dogru girildi. Burada mail gonderimi, kayit vb. islemlerinizi yapabilirsiniz.
                    echo 'Guvenlik kodu dogru. Tesekkurler.';
                    unset($_SESSION['guvenlik']['deger']);
                }
                else
                {
                    echo 'Hatali Guvenlik Kodu';
                }
            }
        }
    
    ?>
    
    
    
    <form action="" method="post">
    <img id="captcha" src="image.php" /><br><input type="text" name="guvenlik" id="guvenlik" /><input type="button" onClick="yenile();" value="Yeni Kod" /><br><input type="submit" value="Gonder" />
    </form>
  • 24-06-2010, 16:33:44
    #16
    Teşekkürler güzel bir konu
  • 04-09-2010, 11:38:59
    #17
    bende hata verıyor nedense image dosyası gözukmuyor :S image.php çalıştrdıgımda yazılar çıkıyor
  • 04-09-2010, 14:54:46
    #18
    gkaradagan adlı üyeden alıntı: mesajı görüntüle
    bende hata verıyor nedense image dosyası gözukmuyor :S image.php çalıştrdıgımda yazılar çıkıyor
    image.php'yi değil image2.php'yi çalıştıracaksınız. bu arada hocam teşekkürler işime yaradı. geliştirilmeye açık bir uygulama olmuş.