Sunday, October 26, 2014

HITBKUL 2014: Daemon 4

Tantangan daemon 4 ini sebenarnya seharusnya diberikan di hari kedua, tapi karena kesalahan panitia, binarynya sudah dimunculkan di hari pertama. Daemon ini pertama akan membaca file flag.txt ke memori

Program ini lalu menghasilkan data random 11 digit

image

Ketika client connect ke daemon ini, maka daemon ini akan meminta PIN, pin ini dicocokkan dengan data random melalui serangkaian fungsi hashing yang rumit, lalu dibandingkan dengan strncmp:

image

Fungsi hashnya sama sekali tidak saya pelajari, berikut ini potongannya yang cukup ribet:

image

Intinya solusinya begini: terlalu rumit untuk mempelajari dan mengimplementasikan ulang algoritma hashingnya, jadi kita gunakan saja fungsi strncmp untuk mencari flag yang benar, diberikan suatu waktu.

Saya membuat file ini, intinya adalah: fungsi time() dioverride agar mengembalikan waktu dari environment variable TIME, dan fungsi strncmp akan me-log kode yang benar ke file timemap.txt

Compile file ini:

gcc -Wall -fPIC -shared -o d4.so  d4.c 

Lalu di sebuah console, jalankan ini:

export TIME=waktumulai

for((i=1; i<4000;i++)); do echo $TIME; export TIME=$(expr ${TIME} + 1); LD_PRELOAD=./d4.so ./d4; done

Di console lain, saya memiliki file ini, yang sekedar mengirimkan 12345678901 ke server.

 

Skrip ini dijalankan dalam loop:

while true; do python brute4.py; done

Hasilnya: kita memiliki file timemap.txt, yang isinya adalah: pada time t, kode yang benar adalah n

Selanjutnya, kita bisa menggunakan data ini untuk menyerang siapapun:

No comments:

Post a Comment