我正在开发一个 python 脚本来暴力破解我在安全事件中发现的恶意 Java 脚本。长话短说,在这个过程中的某个时刻,他们用异或混淆了重定向到有效负载的脚本。这就是我的做法。 python :
#!/usr/bin/python
import os
import subprocess
perl = "perl -pe 's/([;\}\{])/$"
userInput = input("")
tail = (r"\n/g'")
def deobBrute():
count = 0
while (count < 101):
return(str(userInput)+str(perl)+str(count)+str(tail))
count = count + 1
output = subprocess.Popen(deobBrute(), shell=True).wait
results = 0
while (results < 101):
print(output)
results = results + 1
我正在输入的用户输入:
cat elsePageXoffset |
elsePageXoffest 是我存储混淆 JS 的文本文件。
它只迭代一次,但是除非它们用 XOR^1 进行混淆,否则对我没有任何好处。
所有其他迭代的错误消息:
<bound method Popen.wait of <subprocess.Popen object at 0x7fb65c6c9128>>
如果这是您的方法(您的制表符困惑),那么该函数将直接返回 (str(userInput)+str(perl)+str(count)+str(tail))
离开,并且函数的其余部分将不会执行,如果您想在方法中继续并返回更多值,请考虑使用yield。当yield返回一个生成器时,您将需要迭代deobBrute
才能访问值
def deobBrute():
count = 0
while (count < 101):
return(str(userInput)+str(perl)+str(count)+str(tail))
count = count + 1
def deobBrute():
count = 0
while (count < 101):
yield(str(userInput)+str(perl)+str(count)+str(tail))
count = count + 1
尝试这样的事情:
#!/usr/bin/python
import os
import subprocess
perl = "perl -pe 's/([;\}\{])/$"
userInput = input("")
tail = (r"\n/g'")
def deobBrute():
for i in range(1, 102):
yield "{0}{1}{2}{3}".format(userInput, perl, i, tail)
brute = deobBrute()
for i in brute:
print(subprocess.Popen(i, shell=True))
我是一名优秀的程序员,十分优秀!