0
点赞
收藏
分享

微信扫一扫

Sql-labs 第一关超详细讲解

洛茄 2022-02-21 阅读 47
sqlweb安全

一.Sql注入含义

所谓的sql注入就是通过某种方式将恶意的sql代码添加到输入参数中,然后传递到sql服务器使其解析并执行的一种攻击手法

二.注入思路

1.判断是否存在注入,注入是字符型还是数字型

2.猜解SQL查询语句中的字段数

3.确定回显位置

4.获取当前数据库

5.获取数据库中的表

6.获取表中的列名

7.得到数据

三.判断是否存在注入点

1.数字型

输入and 1=1与and 1=2 回显正常,所以该地方不是数字型;

2.字符型 

在id=1后面加个'(单引号),回显出错,可能存在字符型。

 输入-- (--空格)将后面的语句注释掉以后,回显正常,表示存在单引号注入。

 (PS:我在这输入--+注释后面语句,会报错,大概意思:错误在你的SQL语法,检查与你的MySQL服务器版本相对应的手册)

 4.猜解SQL查询语句中的字段数

使用order by 语句判断,该表中一共有几列数据,order by 3页面回显正常,order by 4页面回显不正常,说明此表一个有3列。

 5.确定回显位置

        将id=1改为一个数据库不存在的id值,如-1,使用union select 1,2,3联合查询语句查看页面是否有显示位。

发现页面先输出了2和3,说明页面有2个显示位 。

6.获取当前数据库 

 得到数据库:security

 7.获取数据库中的表

 

 得到security的所有表:emails,referers,uagents,users

8.获取列名

 

 union select 1,group_concat(column_name),3 from information_schema.columns where table_schema='security' and table_name='users'-- (不加and table_name='users'会显示所有表的列名,不利于查找我们想要的列名)

得到users列名:id,username,password;

9.得到数据

第一种方法

 

 union select 1,username,password from users limit 0,1-- (这里采用limit 0,1,因为用group_concat()一次爆出多条数据,不方便我们查看相对应的用户名和密码,自己对比一下就知道了)

 得到数据:Dumb ,Dumb

第二种方法

 

 0x是十六进制标志,3a在ASCII码中表示为“:”,用以分隔username和password

举报

相关推荐

0 条评论