zoukankan      html  css  js  c++  java
  • python写一个信息收集四大件的脚本

    0x0前言:

    带来一首小歌:

    之前看了小迪老师讲的课,仔细做了些笔记

    然后打算将其写成一个脚本。

    0x01准备:

    requests模块

    socket模块

    optparser模块

    time模块

    0x02笔记和思路:

    笔记:
    信息收集四大件
    6.快速判断网站系统类型:  
      改一个网站后缀名文件,看它对大小写是否敏感
      windows:不区分大小写
       Linux:区分大小写
    7.判断网站语言格式
      看后缀
      动态语言
      疑问:伪静态该怎么判断
    8.判断网站的数据库类型
      端口扫描、
      SQL报错注入
       搭建分析
      以下3种方法会导致探测数据库失败:
       知识点:
       ACCESS:无端口
       MYSQL:3306
       MSSQL:1433
       ORACLE:1521
       1.内网服务器   (通过内网穿透将本机的东西眏射出来,就是转发某个端口(类似于ngrok))
       2.将数据库默认端口修改了
       3.站库分离(网站源码和数据库不在一台服务器上)
    9.判断网站架构
      审查元素(F12)
    

     判断系统的思路:

    随便找一个网站的目录然后将其后缀其中一个改为大写

    如果页面返回和原来一样的页面就是windows系统

    如果页面返回和原来的页面不一样就是Linux系统

    那我们也就可以知道了,返回也面的字节是不一样的

    我们就可以写一个判断了

    证实:

    原来的页面

    更改后缀最后一个字符

    结果:返回的页面不一样,是Linux或者Unix

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    判断数据库类型思路:这里我采用端口判断,如果目标网站改了默认端口或站库分离是识别不出来的,到时候写个SQL注入的判断的脚本。

    端口扫描用socket就能实现。

      ACCESS:无端口
       MYSQL:3306
       MSSQL:1433
       ORACLE:1521

    --------------------------------------------------------------------------------------------------------------------------

    判断服务架构思路:看http响应头就行

    0x03代码:
    import requests
    import os
    import socket
    import time
    import optparse
    from bs4 import BeautifulSoup
    def main():
        usage='-x 判断系统类型' 
              '-t 判断数据库类型' 
              '-g 判断服务架构' 
              '-j 判断网站语言'
        parser=optparse.OptionParser(usage)
        parser.add_option('-x',dest='system',help='判断系统,判断原理通过目录来判断例:https://www.btime.com/finance')
        parser.add_option('-t',dest='database',help='判断数据库,通过端口来判断数据库类型')
        parser.add_option('-g',dest='headerss',help='判断架构')
        parser.add_option('-j',dest='language',help='判断语言')
        (options,args)=parser.parse_args()
        if options.system:
            system=options.system
            SYSTEM(system)
        elif options.database:
            database=options.database
            DATABASE(database)
        elif options.language:
            language=options.language
            LANGUAGE(language)
        elif options.headerss:
            headerss=options.headerss
            HEADERSS(headerss)
        else:
            parser.print_help()
            exit()
    def SYSTEM(system):
        sc = "{}".format(system)
        gs = sc[-1].capitalize()
        sw = sc.strip(sc[-1])
        url = sw + gs
        sg = requests.get(url)
        print(sg.url)
        a = requests.get(sc).content
        b = requests.get(url).content
        if a != b:
            print('系统是:Linux')
        else:
            print('系统是:windows')
    def DATABASE(database):
        s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        try:
          s.settimeout(3)
          s.connect((database,1433))
          print('[+]MSSQL数据库开放')
        except:
            print('[-]1433关闭')
    
        time.sleep(0.1)
    
        try:
            s.settimeout(3)
            s.connect((database,1521))
            print('[+]oracle数据库开放')
        except:
            print('[-]1521端口关闭')
    
        time.sleep(0.1)
    
        try:
            s.settimeout(3)
            s.connect((database,3306))
            print('[+]MYSQL数据库开放')
        except:
            print('[-]3306关闭')
    def HEADERSS(headerss):
        url="{}".format(headerss)
        headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'}
        r=requests.get(url,headers=headers)
        print('[+]协议类型:',url[0],url[1],url[2],url[3],'/',r.status_code)
        print('[+]服务架构:',r.headers['Server'])
        print('[+]页面类型',r.headers['Content-Type'])
    def LANGUAGE(language):
        url="{}".format(language)
        headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'}
        g=requests.get(url,headers=headers)
        try:
          print('[+]程序支持',g.headers['X-Powered-By'])
        except:
            print('[-]没有找出该网站的程序支持')
    if __name__ == '__main__':
        main()
    

      脚本运行:

     

    
    
  • 相关阅读:
    Flask-SQLAlchemy 学习总结
    ubuntu安装redis
    PostgreSQL在Ubuntu上安装指南
    Linux(Ubuntu)下MySQL的安装与配置
    python wechat_sdk间接性的出现错误OfficialAPIError: 40001,说access_token已过期或者不是最新的。
    django不要设置datetime字段auto_now=True
    python 装饰器和 functools 模块
    关于 Python Iterator 协议的一点思考
    python中的enumerate函数
    8 种常被忽视的 SQL 错误用法
  • 原文地址:https://www.cnblogs.com/haq5201314/p/8584010.html
Copyright © 2011-2022 走看看