python脚本改批量的3种简单方法
当新的Poc出来,一般都只是单个验证,想在最快的时间刷最多的洞,怎么办?
当渗透目标是海量时候,你手上的工具只是单个验证的,怎么办?
这时候当然就需要批量了,求人不如求己,简单的批量其实很简单,有如下3种方法,大家可以试试。
以下以lijijie的subDomainsBrute为例
1.再写一个简单批量调用脚本
python调用Shell脚本,有两种方法:os.system(cmd)或os.popen(cmd),前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程中的输出内容。实际使用时视需求情况而选择。
system函数可以将字符串转化成命令在服务器上运行;其原理是每一条system函数执行时,其会创建一个子进程在系统上执行命令行,子进程的执行结果无法影响主进程;
import os
with open("urls.txt", 'r') as urls:
for url in urls:
url = url.strip('\n')
str='python subDomainsBrute.py --full '+url
print str
p=os.system(str)
2.直接改写原脚本的函数
主要在主函数中添加如下的代码,简单判处参数中是否有.txt后缀,有的话,把目标url读取进来,接着打印下总的参数、目标,最后就是依次读取URL进行扫描了。
if '.txt' in args[0]:
with open(args[0], 'r') as f:
target_urls = f.readlines()
else:
target_urls = args[0].split()
print "options:\n"+str(options)
print "target:\n"+args[0]
print "target_urls:\n"+str(target_urls)
for target_url in target_urls:
target_url = target_url.rstrip('\n')
print target_url
...
3.使用插件化并发框架
例如使用poc-t,只需要把代码改为函数化即可
可以参考https://github.com/Xyntax/POC-T/wiki/03-编写脚本
在代码中添加函数 poc()
添加逻辑使验证成功(漏洞存在)时return True,验证失败时return False
(程序运行时,每个子线程调用该文件的poc()方法,并将队列中的取出的字符串传入该方法
def poc(input_str):
return True or false
```