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.
      Ответить
    • показать все, что скрытоvanished
      Ответить
      • PEB в Винде это немножко не про то. В эту структурку навалена куча разного говна: от указателя на данные загрузчика (LDR, список загруженных дллок именно там лежит) до флага «BeingDebugged» (https://www.nirsoft.net/kernel_struct/vista/PEB.html). Работу с «переменными окружения» процесса можно вести при помощи говноапишек: https://docs.microsoft.com/ru-ru/windows/win32/procthread/environment-variables.
        Ответить
        • показать все, что скрытоvanished
          Ответить
          • Из PEB->ProcessParameters->Environment (http://bytepointer.com/resources/tebpeb64.htm). А в «Linux» «/proc/*/environ» — это просто список переменных окружения.
            Ответить
            • показать все, что скрытоvanished
              Ответить
              • показать все, что скрытоКак теперь выйти? ^K Q не работает
                Ответить
              • показать все, что скрытоvanished
                Ответить
              • Крутой дизайн! Даже выпадающее меню работает.
                Ответить
              • И правда. Переменные окружения другого процесса предлагается читать через ReadProcessMemory. Какой багор )))
                Ответить
                • показать все, что скрытоvanished
                  Ответить
                  • Ну да, структурки недокументированные, придётся на разных битностях разные оффсеты хуярить. И ещё следить за актуальностью — в новых версиях всё может по пизде пойти из-за смены структурок.

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

                        Нет, скорее всего. Пиздец нарастает.
                        Ответить
                        • показать все, что скрытоvanished
                          Ответить
                          • > Ну, строки там можно зырить и в имедже, и в памяти.
                            В «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», записать в процесс шеллкод, загружающий либу, передать на него управление, выполнить, а потом вернуться туда, где были.
                                    Ответить
                            • показать все, что скрытоvanished
                              Ответить
                          • показать все, что скрытоГамнокот 2019 года.
                            Рачьё своими словами обсуждает ZwQueryInformationProcess
                            Ответить

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