+ Reply to Thread
Page 1 of 2 1 2 LastLast
Results 1 to 20 of 27

Thread: Stack overflow

  1. #1
    ximera's Avatar

    Exclamation Stack overflow

    Всем ку. Я тут сижу решаю pwnable.kr задания, и вот запнулся на bof(buffer overflow), вроде бы рассчитал все верно и количество символов, и вывод сделал, и передаю вывод в файл, даже в отладчике проследит что условие срабатывает. Но эксплуатация не происходит хоть ты тресни.

    Бинарь и исходник доступны тут:

    Executable : http://pwnable.kr/bin/bof
    Source : http://pwnable.kr/bin/bof.c

    Есть вот такой shellcode:

    Code:
    xxd shell
    0000000: 6161 6161 6161 6161 6161 6161 6161 6161 aaaaaaaaaaaaaaaa
    0000010: 6161 6161 6161 6161 6161 6161 6161 6161 aaaaaaaaaaaaaaaa
    0000020: 6161 6161 6161 6161 6161 6161 6161 6161 aaaaaaaaaaaaaaaa
    0000030: 6161 6161 beba feca aaaa....


    В отладчике переход даже срабатывает, и все, далее "Stack smashing detect".

    Укажите путь куда копать. Буду очень благодарен.
    Чтобы избегать ошибок, надо набираться опыта; чтобы набираться опыта, надо делать ошибки. © Лоренс Питер

    Неизбежное прими достойно. © Сенека Луций Анней

    Господи... храни сумасшедших. © Сумасшедший Фрэнки

  2. #2

    Default Re: Stack overflow

    На врезке мы видим только содержимое файла shell (хотя к шелкоду это никакого отношения не имеет, скорее exploit).
    Хотелось бы еще увидеть, как содержимое файла передается в целевой процесс локально и тем более когда мы имеем доступ к удаленному целевому процессу через netcat.
    Внутри спойлера много букав... Сессия gdb на локальной машине.


  3. Пользователь сказал cпасибо:
    ximera (30-08-2014)
  4. #3
    REU's Avatar

  5. Пользователь сказал cпасибо:
    ximera (30-08-2014)
  6. #4
    ximera's Avatar

    Default Re: Stack overflow

    Генерация шелла происходит так:

    Code:
    echo -ne 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  aaa\xbe\xba\xfe\xca' > shell


    Вывод файла показан выше.

    Далее привожу сессию внутри gdb:

    Оффтоп
    Last edited by ximera; 01-09-2014 at 15:20.
    Чтобы избегать ошибок, надо набираться опыта; чтобы набираться опыта, надо делать ошибки. © Лоренс Питер

    Неизбежное прими достойно. © Сенека Луций Анней

    Господи... храни сумасшедших. © Сумасшедший Фрэнки

  7. #5
    REU's Avatar

    Default Re: Stack overflow

    Ушло чуть больше часа на все задания )

  8. Пользователь сказал cпасибо:
    Dark Koder (03-09-2014)
  9. #6
    ximera's Avatar

    Default Re: Stack overflow

    Quote Originally Posted by BoRoV View Post
    Ушло чуть больше часа на все задания )
    Скажи в каком направлении копать по MD5 коллизиям. Я вообще дупля по этой теме.
    Чтобы избегать ошибок, надо набираться опыта; чтобы набираться опыта, надо делать ошибки. © Лоренс Питер

    Неизбежное прими достойно. © Сенека Луций Анней

    Господи... храни сумасшедших. © Сумасшедший Фрэнки

  10. #7

    Default Re: Stack overflow

    Нет там никакого МD5. Сырок посмотри из таска.

  11. #8
    Dark Koder's Avatar

    Default Re: Stack overflow

    Magicus Technicus
    Магистр Кодерус


  12. #9

    Default Re: Stack overflow

    Моя пиписка длинее :)


  13. #10
    REU's Avatar

    Default Re: Stack overflow

    У меня еще время есть, вырастит )))

    Я еще парочку решил

  14. #11

    Default Re: Stack overflow

    Поднялся в сотню. Помогаем, делимся, почкуемся...

  15. 2 пользователя(ей) сказали cпасибо:
    Dark Koder (09-09-2014) ximera (08-09-2014)
  16. #12
    ximera's Avatar

    Default Re: Stack overflow

    Я пока выбываю. У меня начался курс по Алгоритмам. К концу недели мб подтянусь.
    Чтобы избегать ошибок, надо набираться опыта; чтобы набираться опыта, надо делать ошибки. © Лоренс Питер

    Неизбежное прими достойно. © Сенека Луций Анней

    Господи... храни сумасшедших. © Сумасшедший Фрэнки

  17. #13
    Neomant's Avatar

    Default Re: Stack overflow

    Завис на passcode, нужен 'волшебный пинок'.
    В исходнике видно, что в scanf передаются неинициализированные указатели, а не адреса переменных passcode1 и passcode2.
    В passcode1 попадают данные из &name[96], но если символ с кодом 05 ещё можно ввести как Ctrl + E, то совершенно непонятно как ввести E6.
    passcode2 в name не попадает.
    Last edited by Neomant; 14-09-2014 at 12:20.

  18. #14

    Default Re: Stack overflow

    И зачем тебе такой набор символов (Е6 00 СС С9)??

  19. #15
    Neomant's Avatar

    Default Re: Stack overflow

    Единственный вариант решения задачи, который вижу - это прописать passcode1(E6 28 05 00) и passcode2(C9 07 CC 00) при вводе name.

  20. #16

    Default Re: Stack overflow

    Тебе нужно проэксплуатировать имеющуюся уязвимость, а не подсунуть значения которые пройдут проверку.

  21. #17
    Neomant's Avatar

    Default Re: Stack overflow

    Можно инициализировать указатель passcode1 через &name[96], например, этим указателем на импорт:
    .got.plt:0804A004 off_804A004 dd offset fflush ; DATA XREF: _fflushr
    Тогда при вызове первого scanf можно подменить адрес импорта на нужный, но опять же возникли проблемы с вводом непечатных символов (04 A0 04 08).

  22. #18
    Neomant's Avatar

    Default Re: Stack overflow

    Пните в нужном направлении с перенаправлением stdin, stderr в input.
    Last edited by Neomant; 15-09-2014 at 23:40.

  23. #19

    Default Re: Stack overflow

    Из командной строки без питона так и не получилось. А так 1) необходимое содержимое пишется в файлы; 2) открываются файлы на чтение и их дескрипторы цепляются на stdin, stderr

  24. #20
    Neomant's Avatar

    Default Re: Stack overflow

    Да, без питона уже никуда :). Я плохо знаком с linux. Разве не пермишн денайд на запись файла из под гостевой учётки? Или есть места, типа tmp, где это можно сделать?

+ Reply to Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
All times are GMT. The time now is 01:28
vBulletin® Copyright ©2000 - 2018
www.reverse4you.org