Come sfruttare questo pezzo di codice? (formato stringa in printf?) [chiuso]

2

Quindi questa parte di codice è vulnerabile a formattare stringa vuln (credo) nella funzione printf() . Legge un file in /tmp/file , quindi ho provato a scrivere diversi modificatori / stringhe in quel file e vedere cosa succede ma non ho trovato nulla di interessante. Quando scrivo poche righe contenenti %x %x %x %x %s , vedo che a volte l'interruzione di riga non è presente e ottengo una riga che contiene effettivamente 2 righe.

Posso anche inserire un b AAA all'inizio della riga, ad esempio se faccio c e la stessa cosa per %code% e %code% e poi copia / incolla questo qualche istante il risultato è:

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>

int main(int arc, char **argv)
{

    int fd;
    fd = open("/tmp/file",O_RDONLY);

    if (fd < 0)
    {
        printf("Cannot open file\n");
        exit(1);
    }

    int nb_lus;
    char line[20];
    while ((nb_lus = read(fd,line,20)) > 0)
    {
        line[nb_lus-1] = '
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>

int main(int arc, char **argv)
{

    int fd;
    fd = open("/tmp/file",O_RDONLY);

    if (fd < 0)
    {
        printf("Cannot open file\n");
        exit(1);
    }

    int nb_lus;
    char line[20];
    while ((nb_lus = read(fd,line,20)) > 0)
    {
        line[nb_lus-1] = '%pre%';
        printf("%s",line);
    }

    close(fd);
    system("/bin/rm /tmp/file");
    return 0;

}
AAAA %pre% bbbbb %pre%cccccc%pre% AAAA
'; printf("%s",line); } close(fd); system("/bin/rm /tmp/file"); return 0; }
AAAA %pre% bbbbb %pre%cccccc%pre% AAAA

L'obiettivo di sfruttamento è leggere alcuni file in una directory protetta ma non ho idea di come lo farei usando questa vulnerabilità. Qualsiasi suggerimento è benvenuto, grazie.

%pre%     
posta user3916237 19.11.2015 - 17:30
fonte

1 risposta

1

Come ho capito, tu controlli il file di input /tmp/file e questo pezzo di programma viene eseguito con privilegi per leggere un file protetto. Il tuo obiettivo è leggere il file protetto.

Non sono riuscito a vedere alcun problema in questo codice. La stringa di formato non è controllata dall'input e i feed di riga mancanti che hai visto erano perché l'ultimo char di ogni 20 byte viene sostituito con un printf (che interrompe /tmp/file dalla lettura oltre il buffer).

Tuttavia, come suggerito da @MikeOunsworth, tutto ciò che devi fare è creare %code% un link simbolico al file protetto e otterrai il contenuto (con ogni 20 byte sostituito, ovviamente).

    
risposta data 19.11.2015 - 18:44
fonte

Leggi altre domande sui tag