Новости Разминка

Wolong
, 11 April 2010

Привет, Мишки и все кто посещает этот блог :)

Как вы знаете, я не смог придти на сегодняшнюю тренировку, зато я написал и поднял небольшую разминку.

http://very.secure.la/minigame.tar.gz

Сама разминка поднята на том же хосте very.secure.la.

Средства регистрации и отправки флагов встроены в сам сервис. Просьба регистрироваться там под настоящими никами.

Enjoy!:)

15 comments:

  1. blackzert
       #   19:08, 11 April 2010

    Блог не тут ;) тут не блог ;)

  2. hellman
       #   19:33, 11 April 2010

    что-то пасс админа какойто не печатаемый )

    что вообще надо сделать?

  3. blackzert
       #   20:30, 11 April 2010

    а ты попробуй проверить на другом пользере.

    типо ползер poper. пароль такойжеж. попробуй получить его пароль из хэша;) если не такой, начит бооольшой косяк с рандомом. Могу даже сорец glibc приложить - там 4 разных рандома %) можно попробовать перебрать...

  4. hellman
       #   21:19, 11 April 2010

    свой пасс восстанавливается легко - прокосрить с некой строчкой (7ff27f5e89d55a47a2ff497123edf6f6 в хексах). Только почему-то это только у новых юзеров, у старых (admin, user1, user2, user3) не прокатывает..

  5. hellman
       #   21:35, 11 April 2010

    даже так - у старых юзеров пасс был схэшен как раз с srand(0x7A69), но пасс проверяется по новому, и поэтому не войти...

  6. blackzert
       #   22:07, 11 April 2010

    а я под виндой так и не добился такой же гаммы.. ) ты под никсами или бсд?

  7. blackzert
       #   22:08, 11 April 2010

    непечатуемые симолы все еще можно отправлять по сети... ;)

  8. blackzert
       #   22:12, 11 April 2010

    Стас, шеллом не угостишь? опытном путём мы установили что только на BSD можно рулить )

  9. hellman
       #   22:20, 11 April 2010

    Никсы :) Вот код шифратора, он же дешифратор по совместительству.

    int main(int argc, char *argv[]) {
        char buf[16];
        int i;    
        srand(0x7a69);
        for (i = 0; i < 16; i++)
            buf[i] = 0;
        for (i = 0; i < strlen(argv[1]); i++)
            buf[i] = argv[1][i];
        for (i = 0; i < 16; i++)
            buf[i] ^= rand();
        for (i = 0; i < 16; i++)
            printf("%02x", (unsigned char)buf[i]);
        printf("\n");
        return 0;
    }
    
  10. blackzert
       #   22:25, 11 April 2010

    списывать нехорошо ))

    у мя такойжеж. =) странно что у чела с никсами невкатило... хм

  11. Wolong
       #   19:10, 12 April 2010

    вай, нафлудили =)

    хэш вскрыли правильно, но почему-то ни одного флага не отправили )

  12. Wolong
       #   19:58, 12 April 2010

    7ff27f5e89d55a47a2ff497123edf6f6 вполне правильная строчка.

    очень странно, что раскодируется в непечатаемые символы, я все пароли генерировал pwgen'ом в последний момент и регистрировал обычным способом - REGISTER.

    тем не менее факт:

    [/tmp/tttt/minigame11.04.2010]% cat users/user1/password

    0c618f66ea2b709d496a4ede22d24f97

    [/tmp/tttt/minigame11.04.2010]% a=`perl -le 'print ( (join "", map{chr hex}("7ff27f5e89d55a47a2ff497123edf6f6"=~/../g) )^( join "", map{chr hex}("0c618f66ea2b709d496a4ede22d24f97"=~/../g) ) )'`

    [/tmp/tttt/minigame11.04.2010]% ./hash $a

    0c618f66ea2b709d496a4ede22d24f97

    [/tmp/tttt/minigame11.04.2010]% echo $a

    s⌠П8cЧ*зК•╞?╧a

  13. Wolong
       #   20:09, 12 April 2010

    похоже я зря понадеялся на детерминированность rand при фиксированном семечке.

    все молодцы :)

    hellman, srand(0×7a69) на самом деле srand(31337) :)

  14. hellman
       #   21:22, 12 April 2010

    я от админу вроде флаг отправлял через баг :)

  15. blackzert
       #   20:07, 13 April 2010

    Да у мя тоже такая идея была как то давно :) Но как оказалось, существует в системе одновременно 4 разных полинома, для генерации значений. не знаю как выбирается какое из них выбирать ( тип полинома заложен в зерне). В общем - glibc/stdlib/random_r.c

    Пасибо )

Authorize to leave a comments