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()

  脚本运行:

 

 

 

 

 


版权声明:本文为haq5201314原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/haq5201314/p/8584010.html