博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python3 实现多域名批量访问特定目录(一)
阅读量:4702 次
发布时间:2019-06-09

本文共 2346 字,大约阅读时间需要 7 分钟。

渗透测试之批量处理同一框架CMS系统漏洞

当我们做多网站的渗透测试时,会发现很多站点采用的都是同类型的CMS框架,只要我们发现一个漏洞,那么我们可以批量处理这一类站点,高效测试,如果不知道该站点的框架时,也可以使用此脚本盲测。

具体实现代码如下

import timeimport requestsimport asyncioimport aiohttpdef open_file(file_name,status,url=None):   #打开检测的文件    with open(file_name ,status) as f:        if status == "r":            url_list = f.readlines()            return url_list        else:            f.write(url)            f.write("\n")# print(url_list)def deal_url(url_list):   #拼接特定目录    deal_url = []    for url in url_list:        url = url.strip()        url += "/www.rar"    #输入检测的特定目录        deal_url.append(url)    return deal_urlasync  def request_url(url):   #发起请求    headers = {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", "Accept-Encoding": "gzip, deflate, br", "Accept-Language": "zh-CN,zh;q=0.9", "Cache-Control": "max-age=0", "Connection": "keep-alive", "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36" } print(url) try: async with aiohttp.ClientSession() as session: async with session.get("http://" + url, headers=headers) as resp1: ###aiohttp模块中ClientSession方法,这两句方法最稳妥,也有session=aiohttp.ClientSession(),resp=session.get(item['image_url']),但是可能会报错,如果不报错,可以使用这种方法,报错就使用上面的代码 if resp1.status == 200: open_file("test_V.txt", "a", url) async with session.get("https://" + url, headers=headers) as resp2: ###aiohttp模块中ClientSession方法,这两句方法最稳妥,也有session=aiohttp.ClientSession(),resp=session.get(item['image_url']),但是可能会报错,如果不报错,可以使用这种方法,报错就使用上面的代码 if resp2.status == 200: open_file("test_V.txt", "a", url) except Exception as e: print(e)def main(): url_list = open_file("test.txt","r") #待检测的域名文件 tasks = [asyncio.ensure_future(request_url(url)) for url in deal_url(url_list)] # 开启协程多任务队列,该语句是列表推导式,列表的简写,与上面两句等效,但是该句是利用协程,多个队列一起进行 loop = asyncio.get_event_loop() loop.run_until_complete(asyncio.wait(tasks)) # 将任务注册到事件循环,并启动任务if __name__ == '__main__': s = time.time() main() print(time.time() - s)

小结:这个异步执行,时间还不是很快,后期学习了其它方法,进一步完善。

转载于:https://www.cnblogs.com/dddjh/p/10686147.html

你可能感兴趣的文章
加快开发时间的8个CSS的预处理程序
查看>>
dom元素高度、屏幕高度 获取
查看>>
asp.net 设置session失效时间
查看>>
杭电多校第四场 E Matrix from Arrays
查看>>
ReactiveCocoa操作方法-线程\时间
查看>>
oracle 分析函数
查看>>
CHD-5.3.6集群上sqoop安装
查看>>
解决无/var/log/messages 问题
查看>>
ThinkPHP5.0中Request请求对象的常用操作
查看>>
js 判断是不是空、值是否存在
查看>>
windows 启动关闭Oracle监听和服务 (转载)
查看>>
【小程序云开发入门】quickStart
查看>>
分布式一致性协议-2PC与3PC(二)
查看>>
em与当前元素的不解之缘
查看>>
学号 《信息安全系统设计基础》第6周学习总结(一)
查看>>
alpha阶段个人总结
查看>>
不透明度opacity进阶
查看>>
C++代码中回调JS方法
查看>>
(WPF) MVVM: 动态添加控件及绑定。
查看>>
SQL中的charindex()方法
查看>>