PHP / Python tampon taşması nasıl?

5 Cevap php

Burada c bir örnek:

#include <stdio.h>
#include <string.h>

void bad() {
    printf("Oh shit really bad~!\r\n");
}

void foo() {
    char overme[4] = "WOW";
    *(int*)(overme+8) = (int)bad;
}

int main() {
   foo();
}

5 Cevap

Önerilen gibi Python ve PHP başkaları tarafından yorumlanır olması aslında noktası değildir. Nokta hemen hemen hepsi açığa API'leri ve dil semantik ağır hata-kontrol imkansız işletilebilir tanımsız davranış var yapma olmasıdır. Eğer dilleri derlemek bile, yine de imkansız olurdu. Bu ne olursa olsun yapabileceğiniz güvensiz API'ler edemeyeceği anlamına gelmez. Aslında, Pythons ctypes modülü kullanılarak, benzer bir davranış oluşturmak mümkün olmalıdır, ancak önemli ölçüde zor kazara bunu.

PHP bir betik dili ve hiçbir işaretçiler vardır ve string türü olarak ikili güvenli böyle şeyler PHP çalışmaz.

Ama neden böyle bir şey yapmak istersiniz?

(Oh, orada ... PHP bir tampon taşması sonucu hatalar olabilir, ama herhangi bir şekilde güvenerek canbe ve genellikle oldukça ffast sabittir hiçbir şey olabilir)

PHP benzer bir şey yapıyor aynı davranışı neden olmaz.

PHP yorumlanmış ve her zaman değil yapıyor ya olan işlem geçerli olup olmadığını kontrol eder .. Yani yapamazsın - örneğin - bir tampon taşması.

Php, python ve her yorumlanır dil ilk olarak bir tercüman aracılığıyla gitmek zorunda ve bellek tam erişim yok çünkü dil bu tür deftere kodu gibi bazı oyunları tür yapmak için izin vermez.

Üzgünüz: Python bir zayıflık ulaştınız. Ne yazık ki, bu tasarım, çok az bu konuda yapılabilir bulunuyor. Belki de C ile kalmalıdır

LOWIS v Martin gibi said:

Python üzgünüm, tampon taşmaları desteklemiyor.

PS Vay. Ben o yazıyı okudum bir kaç ay önce gibi görünüyor, ve henüz 7 yıl ve bir gün oldu.