Quals: Saudi and Oman National Cyber Security CTF 2019. WriteUp

    Привет, Хабр.

    7-9 февраля 2019 года проходил квалификационный этап соревнования на площадке cybertalents, цель — поиск киберталантов для Омана и Саудовской Аравии. Люди из других стран, согласно правилам мероприятия, участвуют вне конкурса. Под катом — разбор определенных задач.



    Соревнование состоит из 9 тасков, четыре из них уровня сложности «easy», четыре — «medium», одна — «hard». За каждую задачу даётся 50, 100 и 200 баллов соответственно. Задачи также разбиты на категории. Ниже решение некоторых задач.

    Back to basics


    Easy, Web Analytics
    not pretty much many options. No need to open a link from a browser, there is always a different way
    Дана ссылка вида example.com/somepage. При переходе по ней нас перенаправляют (301 Moved Permanently) на ту же страницу со слешем на конце, а она, в свою очередь, редиректит на google.com:



    Попробуем POST-запрос ко второй странице:



    var _0x7f88=["","join","reverse","split","log","ceab068d9522dc567177de8009f323b2"];function reverse(_0xa6e5x2){flag= _0xa6e5x2[_0x7f88[3]](_0x7f88[0])[_0x7f88[2]]()[_0x7f88[1]](_0x7f88[0])}console[_0x7f88[4]]= reverse;console[_0x7f88[4]](_0x7f88[5])
    

    Нежно пропускаем код через JS beautify:

    function reverse(_0xa6e5x2) {
        flag = _0xa6e5x2['split']('')['reverse']()['join']('')
    }
    console['log'] = reverse;
    console['log']('ceab068d9522dc567177de8009f323b2')

    Флаг: 2b323f9008ed771765cd2259d860baec

    I love images


    Easy, Digital Forensics
    A hacker left us something that allows us to track him in this image, can you find it?
    К задаче приложена картинка:


    Ссылка на картинку

    Решение
    Открываем в хекс-редакторе. Заметим, что формат png имеет концевик «IEND» (49 45 4E 44). Смотрим в конец:

    Наблюдается, что добавлена дополнительная информация в конец файла. Первое предположение — base32, т.к. все буквы в одном регистре. Расшифровываем:
    FLAG{Not_Only_Base64}

    I love this guy


    Medium, Malware Reverse Engineering
    Can you find the password to obtain the flag?
    Дан файл

    Решение
    Пропускаем файл через Detect It Easy:



    Открываем DNSpy x86

    Файл действительно очень небольшой и состоит из одного пользовательского события — Button_Click:

    string value = new string(new char[]
    			{
    				this.Letters[5],
    				this.Letters[14],
    				this.Letters[13],
    				this.Letters[25],
    				this.Letters[24]
    			});
    			if (this.TextBox1.Text.Equals(value))
    			{
    				MessageBox.Show(new string(new char[]
    				{
    					this.Letters[5],
    					this.Letters[11],
    					this.Letters[0],
    					this.Letters[6],
    					this.Letters[26],
    					this.Letters[8],
    					this.Letters[28],
    					this.Letters[11],
    					this.Letters[14],
    					this.Letters[21],
    					this.Letters[4],
    					this.Letters[28],
    					this.Letters[5],
    					this.Letters[14],
    					this.Letters[13],
    					this.Letters[25],
    					this.Letters[24],
    					this.Letters[27]
    				}));
    			}

    Также в текущем классе объявлена строка:
    public char[] Letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ{}_".ToCharArray();
    

    Есть два варианта решения — в статике и динамике. Сперва решим статическим методом:

    # text - текст метода
    >>> for i in range(len(letters)):
    	text = text.replace(f"this.Letters[{i}]", letters[i])
    >>> print(text)
    string value = new string(new char[]
    			{
    				F,
    				O,
    				N,
    				Z,
    				Y
    			});
    			if (this.TextBox1.Text.Equals(value))
    			{
    				MessageBox.Show(new string(new char[]
    				{
    					F,
    					L,
    					A,
    					G,
    					{,
    					I,
    					_,
    					L,
    					O,
    					V,
    					E,
    					_,
    					F,
    					O,
    					N,
    					Z,
    					Y,
    					}
    				}));
    			}
    

    Когда мы убедимся, что программа не несет вред, можно отладить ее в динамике. Ставим бряку (точку останова, breakpoint) на начало метода, смотрим в локальных переменных, добываем переменную value, после чего нам выведется сообщение с флагом.

    Флаг: FLAG{I_LOVE_FONZY}

    Just Another Conference


    Easy, General Information
    famous Cybersecurity conference runs by OWASP in different locations
    Флаг
    AppSec
    Поделиться публикацией

    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое