我用下面的代码分割一个字符串,创建一个列表,并给定一个特定的模式,用另一个字符替换一个随机字符
comando = "/bin/cat /etc/passwd"
payloadMUT1 = comando
payloadMUT3 = re.split(r'/', payloadMUT1)
filteredarray = []
for i in payloadMUT3:
#i don't want special chars to get involved in the substitution process
filteredarray.extend(re.findall(r'\b[^\W\d_]+\b', i))
for a in filteredarray:
randomIndex = int(random.random() * len(a))
randomChar = a[randomIndex]
payloadMUT4 = a.replace(randomChar, '?')
输出:
?in
ca?
et?
pa??wd
我如何将所有这些值组合起来构建整个(更新后的)字符串?
这是我正在寻找的输出:
/?in/ca? /et?/pa??wd
ps:/bin/cat /etc/passwd只是一个例子;它可以是其他任何东西,也可以是一个带有多个斜杠和空格的字符串
更多示例:
/bin/find . -type f -iname "*.stuff" -exec egrep -H -i '[a-z]\.[a-z]\.[a-z]' {} \; -> /b?n/fi?d . -type f -iname "*.stuff" -exec egrep -H -i '[a-z]\.[a-z]\.[a-z]' {} \;
/usr/bin/ls | /bin/grep "something" -> /?sr/b?n/l? | /bi?/gre? "something"
/bin/curl http://111.111.111.111:1111/ -X POST -d "a=a&b=b" -> /?in/cur? http://111.111.111.111:1111/ -X POST -d "a=a&b=b"
3条答案
按热度按时间4szc88ey1#
可以使用字符串连接来连接filteredarray中的所有值,并使用'/'字符将它们连接起来,形成更新后的字符串。
wnrlj8wa2#
你可以先用空格分割字符串,然后再用斜杠分割。这样,你就可以重新组合路径,然后再用空格连接它们。但是,它确实需要多几行,因为二维数组存储每个路径。
v440hwme3#
您可以添加另一个存储修改值的列表(这里称为'new_array'),然后使用
join
方法再次将所有内容连接在一起