一、python
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。
python 是一门简单易学的语言,并且功能强大也很灵活,在渗透测试中的应用广泛,让我们一起打造属于自己的渗透测试工具

二、web服务器的目录探测脚本打造

1、在渗透时如果能发现web服务器中的webshell,渗透是不是就可以变的简单一点尼
通常情况下御剑深受大家的喜爱,但是今天在测试的时候webshell不知道为什么御剑扫描不到
仔细查看是webshell有防爬功能,是检测User-Agent头,如果没有就回返回一个自己定义的404页面 

1、先来看看工具效果

2、利用python读取扫描的目录字典

def get_url(path): with open(path, "r", encoding='ISO-8859-1') as f: for url in f.readlines(): url_list.append(url.strip()) return url_list

3、利用 python 的 requests 库对web目标服务器进行目录探测

  1.  
    def Go_scan(url):
  2.  
        while not queue.empty():
  3.  
            url_path = queue.get(timeout=1)
  4.  
            new_url = url + url_path
  5.  
            res = requests.get(new_url, headers=headers, timeout=5)
  6.  
            #print(res.status_code)
  7.  
            status_code = "[" + str(res.status_code) + "]"
  8.  
            if str(res.status_code) != "404":
  9.  
                print(get_time(), status_code, new_url)

4、利用 python 的 threading 库对探测进行线程的设置

  1.  
    def thread(Number,url):
  2.  
        threadlist = []
  3.  
        for pwd in url_list:
  4.  
            queue.put(pwd)
  5.  
     
  6.  
        for x in range(Number):
  7.  
            t = threading.Thread(target=Go_scan, args=(url,))
  8.  
            threadlist.append(t)
  9.  
     
  10.  
        for t in threadlist:
  11.  
            t.start()

5、利用 python 的 argparse 库进行对自己的工具进行封装

  1.  
    def main():
  2.  
        if len(sys.argv) == 1:
  3.  
            print_banner()
  4.  
            exit(1)
  5.  
     
  6.  
        parser = argparse.ArgumentParser(
  7.  
            formatter_class=argparse.RawTextHelpFormatter,
  8.  
            epilog='''\
  9.  
    use examples:
  10.  
      python dir_scan.py -u [url]http://www.test.com[/url] -d /root/dir.txt
  11.  
      python dir_scan.py -u [url]http://www.test.com[/url] -t 30 -d /root/dir.txt
  12.  
      ''')
  13.  
        parser.add_argument("-u","--url", help="scan target address", dest='url')
  14.  
        parser.add_argument("-t","--thread", help="Number of threads", default="20", type=int, dest='thread')
  15.  
        parser.add_argument("-d","--Dictionaries", help="Dictionary of Blasting Loading",
  16.  
            dest="Dictionaries")

总结
各位大哥有意见或者建议尽管提,文章哪里不对的话会改的,小弟定会虚心学习最后附上全部源码供大佬指教

  1.  
    #!/usr/bin/python
  2.  
    # -*- coding: utf-8 -*-
  3.  
     
  4.  
    import requests
  5.  
    import threading
  6.  
    import argparse,sys
  7.  
    import time,os
  8.  
    from queue import Queue
  9.  
     
  10.  
    url_list = []
  11.  
    queue = Queue()
  12.  
     
  13.  
    headers = {
  14.  
        'Connection':'keep-alive',
  15.  
        'Accept':'*/*',
  16.  
        'Accept-Language': 'zh-CN',
  17.  
        'User-Agent':'Mozilla/5.0 (Windows NT 6.2; rv:16.0) Gecko/20100101 Firefox/16.0'
  18.  
    }
  19.  
     
  20.  
    def print_banner():
  21.  
        banner = r"""
  22.  
        .___.__            __________________     _____    _______  
  23.  
      __| _/|__|_______   /   _____/\_   ___ \   /  _  \   \      \ 
  24.  
     / __ | |  |\_  __ \  \_____  \ /    \  \/  /  /_\  \  /   |   \
  25.  
    / /_/ | |  | |  | \/  /        \\     \____/    |    \/    |    \
  26.  
    \____ | |__| |__|    /_______  / \______  /\____|__  /\____|__  /
  27.  
         \/                      \/         \/         \/         \/
  28.  
     
  29.  
    [*] Very fast directory scanning tool.
  30.  
    [*] try to use -h or --help show help message
  31.  
        """
  32.  
        print(banner)
  33.  
     
  34.  
    def get_time():
  35.  
        return '[' + time.strftime("%H:%M:%S", time.localtime()) + '] '
  36.  
     
  37.  
    def get_url(path):
  38.  
        with open(path, "r", encoding='ISO-8859-1') as f:
  39.  
            for url in f.readlines():
  40.  
                url_list.append(url.strip())
  41.  
            return url_list
  42.  
     
  43.  
     
  44.  
    def Go_scan(url):
  45.  
        while not queue.empty():
  46.  
            url_path = queue.get(timeout=1)
  47.  
            new_url = url + url_path
  48.  
            res = requests.get(new_url, headers=headers, timeout=5)
  49.  
            #print(res.status_code)
  50.  
            status_code = "[" + str(res.status_code) + "]"
  51.  
            if str(res.status_code) != "404":
  52.  
                print(get_time(), status_code, new_url)
  53.  
     
  54.  
    def thread(Number,url):
  55.  
        threadlist = []
  56.  
        for pwd in url_list:
  57.  
            queue.put(pwd)
  58.  
     
  59.  
        for x in range(Number):
  60.  
            t = threading.Thread(target=Go_scan, args=(url,))
  61.  
            threadlist.append(t)
  62.  
     
  63.  
        for t in threadlist:
  64.  
            t.start()
  65.  
     
  66.  
     
  67.  
    def main():
  68.  
        if len(sys.argv) == 1:
  69.  
            print_banner()
  70.  
            exit(1)
  71.  
     
  72.  
        parser = argparse.ArgumentParser(
  73.  
            formatter_class=argparse.RawTextHelpFormatter,
  74.  
            epilog='''\
  75.  
    use examples:
  76.  
      python dir_scan.py -u [url]http://www.test.com[/url] -d /root/dir.txt
  77.  
      python dir_scan.py -u [url]http://www.test.com[/url] -t 30 -d /root/dir.txt
  78.  
      ''')
  79.  
        parser.add_argument("-u","--url", help="scan target address", dest='url')
  80.  
        parser.add_argument("-t","--thread", help="Number of threads", default="20", type=int, dest='thread')
  81.  
        parser.add_argument("-d","--Dictionaries", help="Dictionary of Blasting Loading",
  82.  
            dest="Dictionaries")
  83.  
        args = parser.parse_args()
  84.  
        Number =args.thread
  85.  
        url = args.url
  86.  
        url_path = args.Dictionaries
  87.  
        print_banner()
  88.  
        get_url(url_path)
  89.  
        print(get_time(), "[INFO] Start scanning----\n")
  90.  
        time.sleep(2)
  91.  
        thread(Number,url)
  92.  
     
  93.  
    if __name__ == '__main__':
  94.  
        main()

利用 python 实现对web服务器的目录探测的更多相关文章

  1. 利用Python实现对Web服务器的目录探测

    今天是一篇提升技能的干货分享,操作性较强,适用于中级水平的小伙伴,文章阅读用时约3分钟. PART 1/Python Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python ...

  2. python 启动简单web服务器

    有时我们在开发web静态页面时,需要一个web服务器来测试. 这时可以利用python提供的web服务器来实现. 1.在命令行下进入某个目录 2.在该目录下运行命令: python -m Simple ...

  3. 用 Python 脚本实现对 Linux 服务器的监控

    目前 Linux 下有一些使用 Python 语言编写的 Linux 系统监控工具 比如 inotify-sync(文件系统安全监控软件).glances(资源监控工具)在实际工作中,Linux 系统 ...

  4. 用 Python 脚本实现对 Linux 服务器的网卡流量监控

    *这篇文章网上已经有相关代码,为了加深印象,我做了相关批注,希望对朋友们有帮助 工作原理:基于/proc文件系统 Linux 系统为管理员提供了非常好的方法,使其可以在系统运行时更改内核,而不需要重新 ...

  5. 利用过滤器Filter和特性Attribute实现对Web API返回结果的封装和统一异常处理

    在我们开发Web API应用的时候,我们可以借鉴ABP框架的过滤器Filter和特性Attribute的应用,实现对Web API返回结果的封装和统一异常处理,本篇随笔介绍利用AuthorizeAtt ...

  6. c#调用js,以及js调用C#里的函数, c#自己生成js代码,实现对web的控制

    using mshtml;using System;using System.Collections.Generic;using System.Linq;using System.Security.P ...

  7. 通过脚本实现对web的健康检查

    前面的文章中(https://www.cnblogs.com/zyxnhr/p/10707932.html),通过nginx的第三方模块实现对web端的一个监控,现在通过一个脚本实现对第三方的监控 脚 ...

  8. 利用iptables防火墙保护web服务器

    实例:利用iptables防火墙保护web服务器 防火墙--->路由器-->交换机-->pc机 配置之前,清空下已有的规则,放在规则冲突不生效 工作中,先放行端口写完规则,再DROP ...

  9. Python 脚本实现对 Linux 服务器的监控

    本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 原文地址 由于原文来自微信公众号,并且脚本都是图片,所以这里 ...

随机推荐

  1. Maven项目引入log4j的详细配置

    注:本文来源于 _xiaoxiong  <Maven项目引入log4j的详细配置> 引入log4j pom.xml <dependency> <groupId>lo ...

  2. jq 操作表单中 checkbox 全选 单选

    知识点: Note: 1: .prop() 和 .attr() 方法的区别 .prop() 针对标签既有属性 .attr() 针对自定义属性 2: $('input:checked')即为选中元素. ...

  3. maven问题解决:提示maven依赖包缺失,但是去文件夹下找确实有这个包

    出现问题:提示maven依赖包缺失,但是去文件夹下找确实有这个包. (我的操作就是:删除文件夹中的jar.重新update,) 搞了好多遍,工具总是提示错误信息,没办法,请求大神 操作大概过程: 1  ...

  4. ASP.NET Core快速入门学习笔记(第2章:配置管理)

    课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务9:配置介绍 命令行配置 Json文件配置 从配置文件文本到c#对象实例的 ...

  5. About Why Inline Member Function Should Defined in The Header File

    About why inline member function should defined in the header file. It is legal to specify inline on ...

  6. json随笔

    <script> var obj2={};//这只是JS对象 var obj3={width:100,height:200};/*这跟JSON就更不沾边了,只是JS的对象 */ var o ...

  7. JS-两个空数组为什么不相等?

    var a = [], b = []; console.log(a==b); 控制台的打印结果是什么?答案是:false. 接下来看解析: 原始值的比较是值的比较: 它们的值相等时它们就相等(==) ...

  8. 在vue-cli3中优雅的使用 icon

    首先我们得有图标 这里我们从网上下载svg文件或者UI给你导出svg文件 我们在src 文件下新建一个放置svg 文件 的文件夹 @/src/icons.将所有 icon 放在这个文件夹下. 创建 i ...

  9. Alpha冲刺(5/10)——2019.4.27

    作业描述 课程 软件工程1916|W(福州大学) 团队名称 修!咻咻! 作业要求 项目Alpha冲刺(团队) 团队目标 切实可行的计算机协会维修预约平台 开发工具 Eclipse 团队信息 队员学号 ...

  10. Codeforces 939E Maximize! (三分 || 尺取)

    <题目链接> 题目大意:给定一段序列,每次进行两次操作,输入1 x代表插入x元素(x元素一定大于等于之前的所有元素),或者输入2,表示输出这个序列的任意子集$s$,使得$max(s)-me ...