1. PHP / Говнокод #26000

    +1

    1. 1
    SCRIPT="<?php http_response_code(429); ob_clean(); //" php -S localhost:80 /proc/self/environ

    sql injection is for kids, grownups use environment variable injection

    Запостил: Fike, 28 Октября 2019

    Комментарии (28) RSS

    • Гет просрал!
      Ответить
    • На «Windows XP» не запускается — там нет никакого /proc/self/environ.
      Ответить
    • PEB в Windows не доступен вообще через ObjectManager, кстати. просто нет такого объекта.
      Ответить
      • PEB в Винде это немножко не про то. В эту структурку навалена куча разного говна: от указателя на данные загрузчика (LDR, список загруженных дллок именно там лежит) до флага «BeingDebugged» (https://www.nirsoft.net/kernel_struct/vista/PEB.html). Работу с «переменными окружения» процесса можно вести при помощи говноапишек: https://docs.microsoft.com/ru-ru/windows/win32/procthread/environment-variables.
        Ответить
        • откуда по твоему берут переменные GetEnvironmentStrings ?
          Ответить
          • Из PEB->ProcessParameters->Environment (http://bytepointer.com/resources/tebpeb64.htm). А в «Linux» «/proc/*/environ» — это просто список переменных окружения.
            Ответить
            • Теперь смотри, что я имел ввиду:

              Некое "главное" хранилище переменных окружения у процесс
              * в Линукс доступно через функции VFS (/proc)
              * в Windows через GLOBAL?? (аналог VFS) не доступны

              вот


              зы: PEB хоть не документирован, но WinDbg (а точнее dbghlp чи как-то так) его знает

              ззы: кончил от дизайна http://bytepointer.com/

              Иканус, зацени сайт
              Ответить
              • показать все, что скрытоКак теперь выйти? ^K Q не работает
                Ответить
              • ого
                книженция
                http://bytepointer.com/images/msdos_encyclo_cover_back.jpg
                Ответить
              • Крутой дизайн! Даже выпадающее меню работает.
                Ответить
              • И правда. Переменные окружения другого процесса предлагается читать через ReadProcessMemory. Какой багор )))
                Ответить
                • ебаный пиздец, это же небось па рзаному работает у 32 и 64 битных процессов?
                  ну нахуй такое

                  проще блядь через дебагер или procexp
                  Ответить
                  • Ну да, структурки недокументированные, придётся на разных битностях разные оффсеты хуярить. И ещё следить за актуальностью — в новых версиях всё может по пизде пойти из-за смены структурок.

                    Так ебаться надо только если тебе требуется программно доступ к пельменным округления получить. Если просто посмотреть — да, procexp или вообще «Process Hacker», там их даже менять можно.
                    Ответить
                    • Чем Process Hacker отличается от procexp?

                      Вообще конечно желание читать чужой env -- не самое распостраненное


                      зы: гост, ты со встречей-то определился?
                      Ответить
                      • Не знаю, я вторым не пользовался. В «Process Hacker» я чаще всего использую (ну, помимо простого просмотра списка процессов) просмотр списка хэндлов (в частности, файлов), дллок, чтение памяти процесса, продвинутый поиск строк, информацию (общесистемную) о чтении/записи файлов. Если это всё есть в «Process Explorer», то эти две утилиты аналогичны.

                        Нет, скорее всего. Пиздец нарастает.
                        Ответить
                        • >просмотр списка хэндлов (в частности, файлов),
                          Есть, и поиск тоже есть.
                          можно найти всех, кто держит "petuh.txt".

                          Вообще показываются все объекты, чьи хендлы есть у процесса в таблице хендлов. Даже мутанты, даже секции.

                          >чтение памяти процесса
                          нету. Ну или я не умею. Я такое тлько windbg могу делать.

                          >продвинутый поиск строк,
                          Ну, строки там можно зырить и в имедже, и в памяти.

                          > информацию (общесистемную) о чтении/записи файлов
                          В смысле сколько считано?
                          Это тоже можно.

                          А если хочется именно все IRP читать, то procemon есть.

                          Да!
                          А еще там можно делать аффинити))

                          procexp и procemon это от Марка Руссивновича, погляди на них, может быть что-то там тебе понравится
                          https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer


                          >>Нет, скорее всего. Пиздец нарастает.

                          :(((
                          Ответить
                          • > Ну, строки там можно зырить и в имедже, и в памяти.
                            В «PH» меня больше привлекает возможность отфильтровать строки по размеру (скажем, длиннее 42 символов), а потом отфильтровать их хоть обычным матчем, хоть регулярками. Удобно, когда надо найти, например, URL.

                            > В смысле сколько считано?
                            Да, выдаётся табличка о том, кто в настоящее время читает, что читает и с какой скоростью читает (или пишет). Можно найти подлеца, жрущего диск.

                            А, и ещё там можно инжектить дллки, прямо из окошка с деревом процессов. Какой Hacker )))
                            Ответить
                            • кто сколько читает показывает и ProceXP, и ResMon, и даже в w2k это можно было увидать через performance counters.

                              про строки круто, а как инжектится dllка? у нее вызывается точка входжа? в котексте коково потока?
                              Ответить
                              • Способов инжекта дохуя и больше, не знаю, какой там конкретно используется. Самый распространённый — выделить память в чужом процессе (VirtualAllocEx), записать туда путь к дллке (WriteProcessMemory) и сделать CreateRemoteThread, точкой входа назначив адрес LoadLibraryW/LoadLibraryA, а аргументом — адрес выделенной памяти. В результате мы получим новый поток в целевом процессе, который загрузит дллку и вызовет её DllMain. Адрес LoadLibrary[AW]?() совпадает для всех* процессов, поэтому его можно получить из своего.

                                *Если не учитывать еблю с «WOW64» процессами, для них проще всего запилить x86 враппер.
                                Ответить
                                • Макака забыл про CreateRemoteThread, макака только помнил, что если у тебя есть хендлер процесса, ты можешь его Wait.. и делать ему WriteProcessMemory

                                  С CreateRemoteThread всё понятно.

                                  А как это сделать на прыще? Там можно clone другого процесса?
                                  Ответить
                                  • Не знаю, на прыщах я не занимался подобными извращениями. Беглое гугление показывает, что наиболее известный способ там — подцепиться через «ptrace», записать в процесс шеллкод, загружающий либу, передать на него управление, выполнить, а потом вернуться туда, где были.
                                    Ответить
                                    • гавнино какое, питрейс это же для дебугира интерфейс
                                      Ответить
                            • Ты «P» потерял.
                              Ответить
                              • угу, и кавычки неправильные вокруг "PHP"
                                Ответить
                                • Почему? Обычные инканусные-гостовые кавычки.
                                  Ответить
                          • показать все, что скрытоГамнокот 2019 года.
                            Рачьё своими словами обсуждает ZwQueryInformationProcess
                            Ответить

    Добавить комментарий